【发布时间】:2017-02-24 05:13:43
【问题描述】:
我在尝试弄清楚如何为父进程和子进程创建单独的管道以单向方式运行时遇到了麻烦。即:父级的描述符和子级的不同描述符。
这是我所拥有的:
#include <sys/types.h>
int main(int argc, char *argv[]) {
int parent[2];
int child[2];
pid_t pid;
int num = 0;
pipe(parent);
pipe(child);
pid =fork();
if(pid > 0){ // do parent stuff
num = 5;
write(parent[1], &num, sizeof(num));
printf("Parent with pid %d sent value: %d\n", getpid(), num);
close(parent[1]);
}else{ // do child stuff
read(child[0], &num, sizeof(num));
printf("Child with pid %d received value: %d\n", getpid(), num);
close(child[0]);
exit(0);
}
return 0;
}
输出:
Parent with pid 31702 sent value: 5
我知道我应该在 read() 和 write() 命令之前的某个时间点关闭一些描述符,但似乎无论我关闭子响应打印之前父可以@987654325 @ 或者我最终会遇到一个坏掉的管道。我应该在哪里关闭描述符才能成功地单向使用这些管道?
【问题讨论】:
标签: c pipe fork parent-child child-process