进程(进程-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
答案 0 :(得分:1)
在文件上使用同步进行进程间通信非常罕见。
通常,unix域套接字,管道或tcp / udp套接字用于进程间通信。服务器(您的进程-1)设置一个侦听套接字并等待其他进程连接或等待它们发送数据(如果已存在连接)。为此,它可以使用轮询或选择,或者在线程服务器的情况下,它也可以使用阻塞读取/ recv来等待来自其他进程的数据。同步不需要锁,因为每个进程都有自己与服务器进程的连接。
请参阅套接字联机帮助页以获取起点。