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

相关推荐
sailing-data17 小时前
【SE】接口标准化
java·开发语言
无名38717 小时前
RTPEngine 官方自带的 perl 测试程序
开发语言·perl·通信
fruge17 小时前
接口 Mock 工具对比:Mock.js、Easy Mock、Apifox 的使用场景与配置
开发语言·javascript·ecmascript
AI小云17 小时前
【数据操作与可视化】Matplotlib绘图-生成其他图表类型
开发语言·python·matplotlib
MediaTea17 小时前
Python 第三方库:plotnine(类 ggplot 的 Python 数据可视化库)
开发语言·python·信息可视化
贩卖黄昏的熊18 小时前
typescript 快速入门
开发语言·前端·javascript·typescript·ecmascript·es6
威桑18 小时前
LLVM (Low Level Virtual Machine)全景机制解析
c++·gcc·llvm
剪一朵云爱着18 小时前
PAT 1164 Good in C
c语言·开发语言
LNN202218 小时前
Qt 5.8.0 下实现触摸屏热插拔功能的探索与实践(3)
开发语言·qt
移远通信18 小时前
配网-复杂场景
服务器·开发语言·php