【发布时间】:2010-11-17 04:07:15
【问题描述】:
我正在编写一些涉及管道的代码。这个想法是我应该有一个无限循环的进程,并在它到来时将数据添加到管道中(我正在通过读取文件来测试它,并在 while 循环中逐行执行)。
如果我将另一个进程(读取管道的进程)设置为睡眠,以便读取整个文件,我没有问题并在输出中获取所有文件。一旦我删除睡眠(所以现在两个进程同时启动,第二个进程从管道中读取信息),我的代码直接进入下面代码的 else 块,我从来没有看到任何实际输出。我做错了什么?
close(pipe[1]);
sleep(5);
while (1) {
nbytes = read(pipe[0], buffer, 200);
if(errno != EWOULDBLOCK) {
printf("%s", buffer);
}
else {
printf("I am not blocked here\n");
sleep(1);
}
}
谢谢
【问题讨论】: