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

相关推荐
kyle~11 分钟前
DDS分布式实时系统---自省机制
开发语言·分布式·机器人·c#·接口·ros2
yujunl12 分钟前
Integrated Security=True(Windows 集成身份验证)
开发语言
右耳朵猫AI13 分钟前
Python周刊2026W23 | Polars 1.41、PyPy v7.3.23、Python 3.15、httpx2、dj-lite-tenant
开发语言·python
昭昭颂桉a19 分钟前
TypeScript 前端的必修课,从 JS 到 TS
开发语言·前端·javascript·typescript
何以解忧,唯有..20 分钟前
Go 语言安装与环境配置完整指南
开发语言·后端·golang
alwaysrun21 分钟前
C++之常量体系const
c++·后端·程序员
郝学胜_神的一滴22 分钟前
CMake 016:深入浅出变量核心用法
c++·cmake
Java面试题总结25 分钟前
MarkItDown 再次登顶GitHub榜
开发语言·c#·github
学逆向的28 分钟前
C++模板
开发语言·c++·网络安全
nwsuaf_huasir29 分钟前
matlab绘制尺寸和字体合适的图片插入到latex的方法
android·开发语言·matlab