#include <unistd.h>int main() {pid_t childPid = fork(); // 创建子进程if (childPid == 0) {// 子进程// 关闭标准输入、输出和错误流close(STDIN_FILENO);close(STDOUT_FILENO);close(STDERR_FILENO);// 打开要写入的文件int fd = open("output.txt", O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR);// 设置新的标准输出为指定文件dup2(fd, STDOUT_FILENO);// 执行需要重定向的命令execlp("/bin/ls", "ls", "-la", NULL);// 若上面的execlp调用失败,则会返回-1,可以根据需求处理该情况} else if (childPid > 0) {// 父进程等待子进程完成waitpid(childPid, nullptr, 0);} else {// fork失败时的处理perror("fork");return 1;}return 0;
}
这段代码首先创建了一个子进程,然后在子进程中关闭了标准输入、输出和错误流,接着打开了名为output.txt的文件,并将其作为新的标准输出(stdout)。最后,通过execlp函数执行了"/bin/ls -la"命令,并将结果重定向到output.txt文件中。