gpt4 book ai didi

c - 标准流管道测试失败

转载 作者:行者123 更新时间:2023-11-30 17:24:07 26 4
gpt4 key购买 nike

创建function to grab stdin, stdout & stderr后,我想测试一下..

这是测试代码:

int fd[3];
char *buf = calloc(200, sizeof(char));
FILE *stream;
pid_t pid;

pid = opencmd(fd, "/bin/echo", (char *[]){"/bin/echo", "hello!"});

stream = fdopen(fd[2], "r");
while (fgets(buf, 200, stream) != NULL)
printf("stderr: %s\n", buf);
fclose(stream);

stream = fdopen(fd[1], "r");
while (fgets(buf, 200, stream) != NULL)
printf("stdout: %s\n", buf);
fclose(stream);

free(buf);
closecmd(pid, fd);

这无法按预期工作。我花了一个小时进行调试,但无法追踪问题,但据我设法,我意识到使用 fdopen 开始使用描述符的流不起作用(出于某种原因) ,但使用直接处理文件描述符的函数(例如 write(2)read(2))可以正常工作。

可能的原因是什么?

最佳答案

这段摘录:(char *[]){"/bin/echo", "hello!"});缺少最后一个 NULL 参数 – user3629249

关于c - 标准流管道测试失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27322505/

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