/cgi-bin/tmp"-6ren">
gpt4 book ai didi

C: execlp() 和 >

转载 作者:太空宇宙 更新时间:2023-11-04 03:30:11 26 4
gpt4 key购买 nike

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

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

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

最佳答案

如果使用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] = '\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

关于C: execlp() 和 >,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37426941/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com