C:execlp()和>

时间:2016-05-25 02:43:13

标签: c bash

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

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

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

1 个答案:

答案 0 :(得分:1)

如果使用dup2,您必须使用execlp自行处理。您可以查看我如何使用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] = '\0';    
        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);

另见这个问题 Redirecting exec output to a buffer or file