Как выполнить./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 не выполняется или, по крайней мере, файл журнала не появляется.

Какие-либо предложения?

0 ответов

Другие вопросы по тегам