我有这种奇怪的情况,read(2) 系统调用总是返回读取为 0 的字节数。我知道当到达 EOF 或要读取的字节指定为 0 时会发生这种情况。我很确定没有在这种情况下,上述情况都是正确的。
这是可能有助于理解问题陈述的代码片段。
po=ACE_OS::lseek(file_hand,-(offset+4),SEEK_CUR);
cout<<"po:"<<po<<endl;
cout<<"file_hand: "<<file_hand<<endl;
// Read message number.
if (!(nobr = ACE_OS::read(file_hand,(char*)buffer,1)))
{
cout << "errno " << errno << endl;
cout<<"Failed to read the message number"<<endl;
ERROR("%s", "Failed to read the message number");
ACE_OS::close(file_hand);
return 0;
}
fd以以下方式打开。file_hand = ACE_OS::open(getFullPathName().c_str(), O_RDONLY,ACE_DEFAULT_OPEN_PERMS);