C++ read()调用始终返回0作为读取的字节数

C++ read()调用始终返回0作为读取的字节数,c++,linux,ace,C++,Linux,Ace,我有一个奇怪的情况,read(2)系统调用总是将读取的字节数返回为0。 我知道当达到EOF或将要读取的字节指定为0时,就会发生这种情况。 我很肯定,在这种情况下,上述情况都不是真的 下面是有助于理解问题陈述的代码片段 po=ACE_OS::lseek(file_hand,-(offset+4),SEEK_CUR); cout<<"po:"<<po<<endl; cout<<"file_hand: "<<file_

我有一个奇怪的情况,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;
    }
po=ACE\u OS::lseek(文件手,-(偏移量+4),SEEK\u CUR);

我认为您的代码不符合您的描述:您应该检查
nobr
中的
==0
以查找EOF,但是那里不需要
errno
。只有在
nobr<0
@glglglgl我也尝试过的情况下,您才需要检查
errno
。。这是我多次尝试的不同版本。但即使我这样做,我的意思是你指定nobr=0的方式。