首页 > 解决方案 > 如何确保我正在启动的程序将其标准输出写入我打开的 FD?

问题描述

我正在尝试为我的 shell 实现><重定向,但就我而言,假设我这样做ls > output.txt了,它会创建一个新文件,但不会将其写入文件中。这是我的代码的预览:

    pid = fork();
    if (pid == 0){
        int i = 0;
        for (i=0; args[i]!='\0'; i++){
            int fd;
            if (strcmp(args[i], ">")==0){

                fd = open(args[i+1], O_CREAT|O_TRUNC | O_WRONLY, 0600);
                dup2(fd,  STDOUT_FILENO);
                close(fd);

            }
            if(strcmp(args[i], "<")==0){

                fd = open(args[i+1],O_RDONLY);
                dup2(fd,  STDOUT_FILENO);
                close(fd);
            }

标签: cio-redirection

解决方案


试试这个 >> 而不是 >

'>>' 附加在文件末尾


推荐阅读