c++ execl 执行 重定向
2024-01-08 16:30:15
#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文件中。
文章来源:https://blog.csdn.net/sun007700/article/details/135459869
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!