阻止在fd上用作独占锁

时间:2013-12-27 05:24:14

标签: c unix

进程(进程-1)按如下方式创建fd:

fd = open(FILE_PATH, O_CREAT, 0644);

有多个进程尝试与进程1进行通信。

他们通过首先获取由进程-1创建的fd的独占锁来实现。

flock(fd, LOCK_EX);

如果他们获得锁定,他们可以与进程1进行通信。

无论如何,我可以将进程1置于睡眠状态,只有当其他进程尝试涌入并成功时它才会被唤醒。

基本上我希望process-1在它创建的fd上阻塞(休眠)。

根据我的要求,我试图以简单的方式解决这个问题。

修改 以下是更多细节: https://stackoverflow.com/questions/20715569/block-on-general-file-descriptor

1 个答案:

答案 0 :(得分:1)

在文件上使用同步进行进程间通信非常罕见。

通常,unix域套接字,管道或tcp / udp套接字用于进程间通信。服务器(您的进程-1)设置一个侦听套接字并等待其他进程连接或等待它们发送数据(如果已存在连接)。为此,它可以使用轮询或选择,或者在线程服务器的情况下,它也可以使用阻塞读取/ recv来等待来自其他进程的数据。同步不需要锁,因为每个进程都有自己与服务器进程的连接。

请参阅套接字联机帮助页以获取起点。