我正在編寫一個插入另一個程序的任務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? –