вызов read () всегда возвращает 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;
}

ФД был открыт следующим образом.
file_hand = ACE_OS :: open (getFullPathName (). c_str (), O_RDONLY, ACE_DEFAULT_OPEN_PERMS);

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]