Отправлять сообщения от дочернего процесса к родителю

Я выполняю родительский код. Затем я делаю форк, а затем 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(.......);
}
Другие вопросы по тегам