Как выполнить./process 2>&1 | тройник log.txt с execvp
Я пытаюсь написать контроллер процесса. Он должен перезапускать процесс снова каждый раз, когда происходит сбой. Обычно я запускаю процесс с помощью следующей команды терминала:
./process 2>&1 | tee log.txt
Теперь я хочу выполнить эту команду с execvp
:
int main() {
int status;
while(1) {
pid = fork();
char* const argv[4] = {"2>&1", "tee", "log.txt", NULL};
if(pid == 0) {
// make child process to ./process
if(execvp("./process", argv) {
perror("execvp");
exit(1);
}
}
else if(pid > 0) {
sleep(3);
// wait for ./process to return
waitpid(pid, &status, 0);
}
}
}
Этот пример программы не дает сбоя и запускается./process, но 2>&1 | tee log.txt
не выполняется или, по крайней мере, файл журнала не появляется.
Какие-либо предложения?