Python和FIFO
我试图在linux下使用Python来理解FIFO,我发现了一个我不理解的奇怪行为. 以下是fifoserver.py
这是fifoclient.py
我还使用mkfifo输入和mkfifo输出创建了两个FIFO. 我不明白为什么当我运行服务器(使用python fifoserver.py输入输出)和客户端(使用python fifoclient.py)来自两个控制台后,一些请求客户端崩溃与f上的“管道损坏”错误.flush().请注意,在崩溃之前,我已经看到从几百到几千个正确处理的请求运行正常. 我的代码有什么问题? 最佳答案 正如其他评论所暗示的那样,你有竞争条件.我怀疑在失败的情况下,服务器在其中一行后被暂停:
然后,客户端可以读取结果,将其打印到屏幕上,然后循环返回.然后它重新打开f – 成功,因为它仍然在服务器端打开 – 并写入消息.同时,服务器已设法关闭f.接下来,客户端上的刷新在管道上执行write()系统调用,这会触发SIGPIPE,因为它现在在另一侧关闭. 如果我是正确的,你应该能够通过将服务器的f.close()移动到g.write(…)之上来解决它. (编辑:宣城站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- linux – 使用IP V6寻址多少钱?
- 怎样在 Fedora Linux 上安装 Brave 浏览器
- linux – 如何确定glibc(glibcxx)二进制版的版本将取决于?
- curl – 使用SSPI进行Kerberos身份验证
- VirtualBox 6.1.8推出,支持RHEL8.2和CentOS 8.2
- linux – 为什么这么多应用程序在不使用任何虚拟内存的情况
- 使用Linux和Bluez 5.0的多个BLE连接
- linux – 如何从Fedora中完全删除X-Windows?
- 一个完美的 Linux 任务管理器和资源监视器
- 在redhat 6.6 64位操作系统中,systemctl命令在哪里?