我正在编写一个插入另一个程序的任务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
来给出应该被重定向到子进程的stdout。 (在这个例子中可能有些像system("./calc/calc ");
)我是这个领域的新手。你可以告诉我吗 ?
顺便说一句,我不知道我是否理解整个过程的实施,因为它是一个问题,我不知道官方的解决方案。
什么是problem_你正在试图解决这样的_actual? –