POSIX open() 在 SMB 共享上挂起

POSIX open() hangs on SMB share

我在使用 mount.cifs 在 linux 下安装 Windows SMB 共享并从我的 C++ 程序写入文件时遇到问题。这工作正常,但一旦出现网络问题(即 Windows 服务器断开连接),使用 POSIX open() 打开文件将无限期挂起。如果共享在文件打开时断开连接,则 POSIX close() 调用也会发生同样的情况。使用 std::ofstream 揭示了类似的问题。

有没有

系统调用在信号到达时中断; errno 将 return EINTR.

您可以在系统调用之前使用 alarm() 来在超时期限后安排 SIGALRM。

如果系统调用 return 在超时期限到期之前成功,您还可以使用 alarm() 取消挂起的 SIGARLM。