Я пишу одну задачу, которая вмещает одну другую программу 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 ");
в этом примере) Я новичок в этом поле. Не могли бы вы мне сказать ?
BTW, я не знаю, пропустил ли я понимание реализации всего процесса, потому что это один вопрос, и я не знаю официального решения.
Что такое _actual problem_ вы пытаетесь решить этот путь? –