LINUX.ORG.RU

Почему так происходит?


0

0

Делаю в программе так:

FILE *f;
FILE *fo;
FILE *fo1;

fo1=fopen("/tmp/31.ddd", "r");
perror("out1 file");

fo=fopen("/tmp/31.dd", "r");
perror("out file");

f=fopen("/tmp/31.d", "r");
perror("in file");

при запуске:
out1 file: Success
out file: Illegal seek
in file: Illegal seek

При этом вызовы fopen можно произвольно менять местами. Все-равно первый открвается, остяльные нет.

То что out file открываются с "r" не обращать внимания - это для проверки.
★★★★
Ответ на: комментарий от legk

и вообще, читать про errno

> Note that errno is undefined after a successful library call: this call may well change this variable, even though it succeeds, for example because it inter‐nally used some other library function that failed. Thus, if a failing call is not immediately followed by a call to perror(), the value of errno should be saved.

legk
()
Ответ на: комментарий от alexru

> меня интересует почему illegal seek. файлы существуют и ничем особым не отличаются?

как вам уже намекнули, значение errno при успешном исполнении операции может содержать все, что заблагорассудится. абсолютно. хотя скорее всего содержит предыдущее значение выставленное по реальной ошибке.

// wbr

klalafuda ★☆☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.