В следующей программе,
int main()
{
int fd;
char buf[8]={};
remove("file.txt");
fd = creat("file.txt",0666);
write(fd,"asdf",5);
perror("write");
lseek(fd,0,SEEK_SET);
perror("lseek");
read(fd,buf,5);
perror("read");
printf("%s\n",buf);
return 0;
}
Мой ожидаемый результат
write : Success
lseek : Success
Read : Success
asdf
Но это показывает
wriet : Success
lseek : Success
Read : Bad file descriptor
Кто-нибудь может сказать мне причину? Я вижу, что строка "asdf"
успешно записана в file.txt
perror()
только в том случае, если что-то действительно не удалось. Если бы read() не завершился ошибкой, вы могли бы напечатать ошибку, связанную с кодом, который вы запускали до вызова read(). - person nos   schedule 17.01.2019