我有两个进度, p1
和p2
,以及一个名为pipe var
的ipc,介于两个进度之间。
我想在p1
写入时锁定var
的rw为p2
,在p1
写完时解锁var
。
PS:
我使用select进行非阻塞,所以当p1
把任何东西放到var
时, p2
会变得可读。可以在p1
写完后让var
变得可读吗?
您可以使用信号(例如SIGUSR1
)。 编写器管道非阻塞(因此它不会在管道变满时阻塞),写入直到它不能再写入,然后将信号发送到另一个进程。 读取过程读取所有(从其非阻塞管道),然后向写入者发送信号,然后写入者继续写入。
但是,这确实不需要。 作者可以写,读者只读。 如果管道变满,编写器将阻塞,直到它可以写更多。 对于读者来说,如果没有什么可读的话,它会阻止。 然后当编写器写入所有数据时,它将简单地关闭管道的末端,读取器将通过read
调用检测到read
零字节。
以上就是c/c++开发分享我可以在C中锁定和解锁fifo(命名管道)吗?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/522946.html