日期:2014-05-16  浏览次数:20687 次

关于标准输出的缓冲造成的死锁
UNIX环境高级变成第2版众,例程8,9,10得到个结论说:

问题出在系统默认的标准I/O缓存机制上。当程序10被调用时,对标准输入的第一个fgets引起标准I   /   O库分配一个缓存,并选择缓存的类型。因为标准输入是个管道,所以isatty为假,于是标准I/O库由系统默认是全缓存的。对标准输出也有同样的处理。当add2从其标准输入读取而发生堵塞时,程序9从管道读时也发生堵塞,于是产生了死锁。

为什么add2堵塞了,程序9(应该是父进程吧)从管道度也发生了堵塞?

有没有人能更详细地说明一下?

------解决方案--------------------
自己解决了.
------解决方案--------------------
这是程序自己的逻辑死锁.不管标准io的事情.