【发布时间】:2020-09-28 17:54:03
【问题描述】:
我在使用mount.cifs 在 linux 下挂载 Windows SMB 共享并从我的 C++ 程序写入文件时遇到问题。这工作正常,但一旦出现网络问题(即 Windows 服务器断开连接),使用 POSIX open() 打开文件将无限期挂起。如果在文件打开时共享断开连接,POSIX close() 调用也会发生同样的情况。使用std::ofstream 会发现类似的问题。
有吗
- 另一个版本的
open()/close()在超时后返回? - 一种从另一个线程释放打开调用而不杀死试图打开的线程的方法?
- 一种预先测试呼叫是否会挂起的方法?
【问题讨论】:
-
那么您需要 POSIX(便携式)还是仅限 Linux 的解决方案? Linux 上有一个新的
io_uring系统调用,可以异步打开/关闭。它不会打断任何东西,但至少不会阻塞。不知道这是否会是你…… -
@StaceyGirl 谢谢,但目标平台是内核 4.14 上的 Raspbian,所以
io_uring不是一个选项。