我有一个问题,当我在linux下用以下方法挂载一个Windows SMB共享时,我有一个问题 mount.cifs
并从我的C++程序中写入文件。这样做很好,但一旦出现网络问题(即Windows服务器断线),用POSIX开文件 open()
将无限期地挂起。同样的情况也发生在POSIX的 close()
如果文件打开时共享断开,则调用该函数。使用 std::ofstream
揭示了类似的问题。
是否有
open()
close()
超时后返回的方法?当一个信号到达时,系统调用会被中断。errno
会返回EINTR。
你可以使用 alarm()
前的系统调用来调度超时后的SIGALRM。
您也可以在系统调用前使用 alarm()
如果系统调用在超时之前成功返回,则取消一个待定的SIGARLM。