Отправлять сообщения от дочернего процесса к родителю
Я выполняю родительский код. Затем я делаю форк, а затем execvpe. Новая программа, которую я "execvpe" выбрасывает много консольных сообщений, и я хочу скрыть их.
Могу ли я перенаправить все мои сообщения stdout и stderr в дочернем процессе в файл?
Я попытался закрыть (1), чтобы я не дамп сообщения на консоли (стандартный вывод), и это не помогло
1 ответ
Решение
pid_t pid = fork();
/* Child process */
if (pid == 0) {
/* Open log file */
int log = creat("logfile", 0644);
/* Redirect stdout to log file */
close(1);
dup(log);
/* Redirect stderr to log file */
close(2);
dup(log);
/* Execute other program: its stdout & stderr (1 & 2) will both point to logfile */
execvpe(.......);
}