我在CentOS 6.4上使用NFSv4。我知道默认"硬" mount选项,如果NFS服务器变得不可访问,则尝试访问NFS文件系统的客户端上的进程将无限期地进入睡眠状态。我不知道的是,即使是非阻塞的open()也可以阻止!
const char *path = "/path/to/file/on/nfs";
fd = open(path, O_RDONLY | O_NONBLOCK);
这令人惊讶。对于O_NONBLOCK条目,open(2)手册页开始为:"如果可能,文件以非阻塞模式打开..." "尽可能"资格证书不给予任何安慰。
这是预期的行为吗?没有解决方法吗?我不想使用" soft" mount选项,因为在网上存在足够的建议而不使用它。而且,即使使用" soft"应用程序仍会阻塞一段时间,这是不必要的。