java 从上管道读入数据_fgetc阻塞:从管道读取的问题

我希望能够分叉一个进程并让子进程和父进程使用管道进行双向链接 . 我创建了2个管道,并从第一个管道的末尾开始读取父级,然后写入第二个管道的开头,反之亦然,但我遇到了一些问题 .

这里有一个简短版本的代码(错误检查省略)

void PlayGame(int in, int out, int first, int id){

FILE *inStream = fdopen(in, "r");

FILE *outStream = fdopen(out, "w");

if (first) fputc( id, outStream);

while(1){

int c = fgetc(inStream);

printf("process %d has read %d\n", id, c);

fputc( id, outStream);

}

}

int main (void){

int fd[2];

int fd1[2];

pipe(fd);

pipe(fd1);

pid_t pid = fork();

if (pid == 0){

PlayGame(fd[0], fd1[1], 0, 1);

exit(0);

}

PlayGame(fd1[0], fd[1], 1, 2);

exit(0);

}

我想要实现的是父进程将一个字符写入管道,并且子进程等待它接收到一个char然后写入其响应并再次等待父进程 . 我在这做错了什么?

父母和孩子都在第一次打电话时卡住了

int c = fgetc(inStream);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值