gpt4 book ai didi

linux - 如果网络连接断开,读取驻留在 smb 装载上的文件的系统调用将永远挂起?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:38:49 30 4
gpt4 key购买 nike

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

最佳答案

您可以尝试将远程文件系统挂载为 cifs 而不是 smb。 mount.cifs支持 soft 选项(这也是默认设置),在网络或服务器出现故障时会返回错误,而不是挂起。

来自手册页:

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.

关于linux - 如果网络连接断开,读取驻留在 smb 装载上的文件的系统调用将永远挂起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11057512/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com