【发布时间】:2013-12-04 09:16:49
【问题描述】:
我有两个进度,p1 和 p2,还有一个命名管道 var 用于两个进度之间的 ipc。
我想在p1 写入时为p2 锁定var 的rw,并在p1 完成写入时解锁var。
ps:
我使用 select 进行非阻塞,所以当p1 向var 输入任何内容时p2 将变得可读。我可以让var 在p1 完成写入时变得可读吗?
【问题讨论】:
-
你有没有试着把你的想法想出一些设计?
-
在 POSIX 系统(如 Linux 和 OSX)上,命名管道是文件系统中的文件,文件可以被锁定。虽然我不知道它们是否适用于管道。您是否尝试过搜索文件锁定功能?
-
现在我有大量数据,需要将其写入管道。但是在所有数据都写入之前,另一个进度不应该读取它
-
我使用 select 进行非阻塞,当
p1将任何内容放入管道时,p2将识别管道是可读的,尽管它没有完全写入整个数据。 -
请记住,管道不是无限的,它可以填满并阻塞写入应用程序。
标签: c pipe nonblocking