在Linux中将管道文件描述符标记为不可写

时间:2019-05-11 14:01:43

标签: linux sockets pipe ipc

我正在研究一个库,用于在Linux上基于UNIX套接字创建IPC。 目的是将IPC逻辑隐藏在一个库中,我使用一个线程来处理套接字的外部通信。

由于我要对来自外部的数据进行多路复用/多路分解,因此我使用管道在此管理线程与其他管理线程之间进行通信。

现在,我也想管理某种QoS,因此,当我知道另一边没有剩余空间时,我想在写方向上阻塞一些用户线程(其他IPC进程也从我那里读取数据)例如缓慢)。

要通知内部用户线程(在其“虚拟通道”中)没有剩余的发送数据空间,我想将其发送管道标记为不可写,然后该线程可以使用例如在此发送管道文件上进行选择描述符。

然后我的问题是:是否有一种方法可以将管道写入文件描述符标记为不可写,即使其内部缓冲区中仍有可用空间,并且当我的管理线程将其再次标记为可写时决定了吗? 请紧记写状态事件应能够通过选择,轮询等功能进行管理。

P.S .:我知道有很多库可以帮助我更轻松地完成相同的工作,例如ZeroMQ或nanomsg,但对于我想要实现的目标而言,它们太繁重了。

0 个答案:

没有答案