0

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);

4

0 に答える 0