我尝试编写一个过程控制器。每次失败时都应该重新启动它。通常我使用以下终端命令启动该过程:
./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
未执行或至少未显示日志文件。
有什么建议吗?