1

我在 centos 盒子上安装了一个 windows 共享文件夹。当我尝试使用 read 系统调用读取一个巨大的文件时,如果网络连接中断,那么读取就会挂起并使我的程序进入不间断的睡眠状态。这听起来不对。即使我使用 O_NONBLOCK 打开文件,即使读取确实挂起。我希望读取最终会超时,但事实并非如此。如果读取只是阻塞而不返回任何错误,您如何通过网络实现可靠的复制操作?我认为使用异步模式和选择调用也不会帮助我。读取总是阻塞调用吗?谢谢加纳库

4

1 回答 1

0

You could try mounting the remote filesystem as cifs instead of smb. mount.cifs supports the soft options (and it is the default too) that will cause an error to be returned in the case of a network or server failure instead of a hang.

From the man page:

soft: (default) The program accessing a file on the cifs mounted file system will not hang when the server crashes and will return errors to the user application.

于 2012-06-20T22:17:33.320 回答