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

相关推荐
fzil0014 分钟前
让 AI 自己协作 —— 多智能体(Swarm)系统的设计与实现
java·开发语言·人工智能·ubuntu
Mem0rin8 分钟前
[Java/数据结构]二叉树练习题几则
java·开发语言·数据结构
止语Lab9 分钟前
Go 错误分层实战:从裸奔到三层防线
开发语言·golang
清平乐的技术专栏10 分钟前
Python依赖包实现window下载上传到Linux
linux·开发语言·python
iiiiyu16 分钟前
常用API(Object类 & Objects类)
java·开发语言
小碗羊肉17 分钟前
【从零开始学Java | 第三十六篇】字符流
java·开发语言
海寻山31 分钟前
Java枚举(Enum):基础语法+高级用法+实战场景+面试避坑
java·开发语言·面试
t***54435 分钟前
能否给出更多现代C++设计模式的示例
开发语言·c++·设计模式
神仙别闹37 分钟前
基于 MATLAB 实现的流载体的LSB隐藏项目
开发语言·matlab
梵尔纳多37 分钟前
OpenGL 骨骼动画
c++·图形渲染·opengl