我想从C文件运行execlp()并将结果写入某个输出文件。 我用这行:
buff = "./cgi-bin/smth";
execlp(buff, buff, "> /cgi-bin/tmp", NULL);
其中smth是已编译的c脚本。 但smth打印到stdout,没有文件出现。 会发生什么,以及如何将脚本结果放到输出文件中?
答案 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);