c++ execl 执行 重定向

复制代码
#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文件中。

相关推荐
枫叶丹411 小时前
【HarmonyOS 6.0】ArkUI Swiper 组件:深入掌握滑动状态变化事件回调
开发语言·华为·harmonyos
小陈工11 小时前
2026年4月4日技术资讯洞察:异步编程范式重塑、架构理性回归与开发者体验革命
开发语言·人工智能·python·机器学习·架构·数据挖掘·回归
Darkwanderor11 小时前
搜索优化——启发式搜索和A*算法
c++·算法·启发式搜索·a星搜索
CAE虚拟与现实11 小时前
Python在Windows 平台上引入了一种新的安装与运行时管理机制
开发语言·python
耶叶11 小时前
BIT-TPS:关于实验4数学库完善与设计重构的详细解读
c++·bit·旋风
承渊政道12 小时前
【优选算法】(实战突破字符串:经典题型与解题模板)
c语言·数据结构·c++·笔记·学习·算法·容器
Hello eveybody12 小时前
图论简述+图论考试要点(Python)
开发语言·python·图论
Hello eveybody12 小时前
二叉树简述+考试要点(Python)
开发语言·python
Hello eveybody12 小时前
图论简述+图论考试要点(C++)
c++·深度优先·图论
第二只羽毛12 小时前
C++高性能内存池6(面试题)
大数据·开发语言·c++