gpt4 book ai didi

c - 在用作排他锁的 fd 上阻塞

转载 作者:太空宇宙 更新时间:2023-11-03 23:50:30 25 4
gpt4 key购买 nike

一个进程(process-1)创建一个fd如下:

fd = open(FILE_PATH, O_CREAT, 0644);

有多个进程试图与进程 1 通信。

他们通过首先获取由 process-1 创建的 fd 的独占锁来做到这一点。

flock(fd, LOCK_EX);

如果他们获得锁,他们可以与 process-1 通信。

无论如何我可以让 process-1 进入休眠状态,只有当其他进程尝试 flock 并成功时它才会被唤醒。

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

根据我的要求,我尽量用简单的方式表达。

编辑:以下有更多详细信息: https://stackoverflow.com/questions/20715569/block-on-general-file-descriptor

最佳答案

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

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

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

关于c - 在用作排他锁的 fd 上阻塞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20795268/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com