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

相关推荐

  1. c++ execl 执行 定向

    2024-01-09 00:48:01       51 阅读
  2. http请求定向

    2024-01-09 00:48:01       63 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-09 00:48:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-09 00:48:01       101 阅读
  3. 在Django里面运行非项目文件

    2024-01-09 00:48:01       82 阅读
  4. Python语言-面向对象

    2024-01-09 00:48:01       91 阅读

热门阅读

  1. Xlua Wrap

    Xlua Wrap

    2024-01-09 00:48:01      66 阅读
  2. Prokka: ubuntu安装的时候出现错误

    2024-01-09 00:48:01       50 阅读
  3. 12306 抢票的糟糕体验

    2024-01-09 00:48:01       67 阅读
  4. 如何创建docker镜像

    2024-01-09 00:48:01       59 阅读
  5. 【c++面试集】年度整理

    2024-01-09 00:48:01       41 阅读
  6. Linux学习笔记9-Linux驱动【1】

    2024-01-09 00:48:01       62 阅读
  7. redisson滑动时间窗应用场景

    2024-01-09 00:48:01       55 阅读
  8. 数据治理工程师 CDGA 认证-数据管理及答案

    2024-01-09 00:48:01       64 阅读
  9. 让数组数组的值和顺序表的值相等的代码

    2024-01-09 00:48:01       52 阅读