正确的方法是替换文件描述符
STDIN_FILENO,
STDOUT_FILENO并
STDERR_FILENO使用打开的文件
dup2()。然后,您还应该在子进程中关闭原始文件:
else if (pid == 0){ dup2(fileno(someopenfile), STDIN_FILENO); dup2(fileno(someotherfile), STDOUT_FILENO); dup2(fileno(somethirdopenfile), STDERR_FILENO); fclose(someopenfile); fclose(someotheropenfile); fclose(somethirdopenfile); execvp(args[0], args); // handle error ...}


