C++ read()在读取常规文件时调用挂起

C++ read()在读取常规文件时调用挂起,c++,linux,ace,C++,Linux,Ace,我有一个以非阻塞模式打开文件的场景 currentFile1 = ACE_OS::open(completeFileName.c_str(), O_RDONLY, ACE_DEFAULT_OPEN_PERMS); bytesRead = ACE_OS::read(myCurrentFile, (char *)myIO_Buffer, 12); 在一些奇怪的场景中,雷德被绞死了很长一段时间。我在论坛上读到的,一般不会挂起普通文件的情况下阅读 如果是常规文件,它们是否也可能被阻止 我想试一下

我有一个以非阻塞模式打开文件的场景

 currentFile1 = ACE_OS::open(completeFileName.c_str(), O_RDONLY, ACE_DEFAULT_OPEN_PERMS);

 bytesRead = ACE_OS::read(myCurrentFile, (char *)myIO_Buffer, 12);
在一些奇怪的场景中,雷德被绞死了很长一段时间。我在论坛上读到的,一般不会挂起普通文件的情况下阅读

如果是常规文件,它们是否也可能被阻止

我想试一下

O_NONBLOCK 

在公开电话中。但是它真的有用吗?

在得出仓促的结论之前,您可能应该做一些io分析(查看
iotop
)。另外,这是C++,不是C。是的,我理解你在说什么,但是我的问题是如果你的磁盘很忙,读呼叫阻塞的可能性是多少。这就是我建议您使用io分析实用程序的原因。另外,请尝试
fsync()
ing文件描述符。@cyphar在我的代码中有一个bug,经过多次尝试后,我可以知道这个问题。谢谢