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文件中。

相关推荐
云和数据.ChenGuang2 分钟前
光哥说Python 循环导入(Circular Import)深度解析:成因、排查与解决方案
开发语言·前端·人工智能·python·langchain
星夜离尘565 分钟前
MATLAB 工程实验:滞回加持续时间报警,把 UNKNOWN 留在状态机里
开发语言·matlab
fengci.18 分钟前
BUUCTF(困难部分)
android·开发语言·前端·学习·php
Highcharts.js21 分钟前
BI可视化图表“维护难”问题的解决方案
开发语言·前端·javascript·编辑器·ecmascript·bi·highcharts
yixun_gdas1 小时前
政企网站错敏巡查:错敏都藏在哪些位置?
开发语言·前端·javascript·内容运营
小羊没烦恼!1 小时前
.NET 11 Runtime Async 详解
java·运维·开发语言·javascript·python
Дерек的学习记录1 小时前
Unreal Engine 5:开关门实现和流程控制
开发语言·学习·ue5
kyle~1 小时前
时间同步 --- PTP 与 Scheduled Action Command
c++·数码相机·机器人·传感器
code2cat2 小时前
Java高级篇之Socket:从建立连接到完整收发一条消息
java·开发语言