C: execlp() 和 >

  • 本文关键字:execlp c bash
  • 更新时间 :
  • 英文 :


我想从 C 文件运行 execlp() 并将结果写入某个输出文件。我使用以下行:

buff = "./cgi-bin/smth";
execlp(buff, buff, "> /cgi-bin/tmp", NULL);

其中 smth 是一个编译的 C 脚本。但是 smth 打印到 stdout,并且没有出现任何文件。会发生什么,以及如何将脚本结果放入输出文件?

如果使用execlp,您必须自己处理dup2。相比之下,您可以查看我如何处理execvp文件输出。我传递一个用于重定向的标志,然后处理它:

  if (structpipeline->option[0] == 1) { /* output redirection */    
        int length = structpipeline[i].size;
        char *filename = structpipeline->data[length - 1];
        for (int k = length - 2; k < length; k++)
            structpipeline->data[k] = '';    
        fd[1] = open(filename, O_WRONLY | O_CREAT, 0666);
        dup2(fd[1], STDOUT_FILENO);
        close(fd[1]);
    } /* TODO: input redirection */
    execvp(structpipeline[i].data[0], structpipeline[i].data);

另请参阅此问题将 exec 输出重定向到缓冲区或文件

相关内容

  • 没有找到相关文章

最新更新