【发布时间】:2016-10-06 16:51:47
【问题描述】:
我正在编写一项任务,该任务插入另一个程序的printf()。它分叉一个子进程并将所有程序的输出重定向到子进程。下面的代码是我写的还没有运行,我想我需要在上面添加这个函数。
int printf(char* format, ... )
{
int res;
static void *(*mallocp)(size_t size);
char *error;
if (!mallocp) {
mallocp = dlsym(RTLD_NEXT, "printf");
if ((error = dlerror()) != NULL) {
fputs(error, stderr);
exit(1);
}
}
va_list args;
va_start(args, format);
res=mallocp(format, args);
va_end(args);
return res;
}
我找到了一个类似的解决方案,但略有不同。 Redirect stdin and stdout in child in c
在我分叉一个子进程并配置好管道后,我真的不知道,我怎样才能让父进程继续使用系统“printf”mallocp 来提供应该重定向到子进程的标准输出。 (在该示例中可能类似于system("./calc/calc ");)我是这个领域的新手。你可以告诉我吗 ?
顺便说一句,我不知道我是否错过了了解整个过程的实现,因为这是一个问题,我不知道官方的解决方案。
【问题讨论】:
-
您试图以这种方式解决的实际问题是什么?