gpt4 book ai didi

c - 现在用 C 管道 IPC

转载 作者:行者123 更新时间:2023-11-30 15:57:43 26 4
gpt4 key购买 nike

出于自学目的,我想用管道连接2个程序。第一个程序接受输入,使其上升并打印到屏幕上,在此示例中,第一个程序被执行,但不可能有输入输出。我必须如何更改第二个程序中的管道 close() 函数才能获得结果。

最佳答案

在写入后立即关闭输出管道,或者在每个字符写入后将第一个程序修改为 fflush(stdout) (由于 std(in|out) 的缓冲性质,第二个程序卡在读取上,而第一个程序等待输入,因为它没有) t get EOF - close() 从第二个程序发送 EOF 到第一个程序,第一个程序终止,并且终止时 stdout 自动刷新)。

int main(int argc, char** argv) {
pid_t pid;
int fi[2];
int fo[2];

char c;

if (pipe(fi) < 0)
perror("pipe");
if (pipe(fo) < 0)
perror("pipe");

switch ( fork() ) {
case -1:
exit(1);
case 0:
dup2(fi[0], STDIN_FILENO);
close(fi[1]);
dup2(fo[1], STDOUT_FILENO);
close(fo[0]);
execlp("pipes1", "pipes1",(char *)NULL);

default:
close(fi[0]);
close(fo[1]);
break;
}

write(fi[1], "t", 1);
close(fi[1]);
read(fo[0], &c, 1);
printf("%c\n", c);
close(fo[0]);

return 0;
}

关于c - 现在用 C 管道 IPC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10311379/

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