FCLOSE в детском процессе влияет на операции с исходным процессом, когда нет Fflush до Flush Fork [Duplicate]Linux

Ответить Пред. темаСлед. тема
Anonymous
 FCLOSE в детском процессе влияет на операции с исходным процессом, когда нет Fflush до Flush Fork [Duplicate]

Сообщение Anonymous »

У меня есть поток файлов, открытый для чтения. Я прочитал некоторые данные. Тогда я разветвляюсь и закрываю поток. Это, однако, влияет на родительский поток файла процесса (или его дескриптор, я полагаю, если я не буду не подключать потоку файла до форки. Что здесь происходит? Что мне делать с потоками файлов на вилке, когда я не хочу использовать их в детском процессе? < /P>

Код: Выделить всё

#include 
#include 
#include 

int main(int argc, char *argv[]) {
FILE *f;
int a, r, s;

f = fopen(argv[1], "r");

a = getc(f);

printf("%ld\n", ftell(f));

fflush(f); /* comment out for different behavior */
if (0 == (r = fork()))
goto end;

if (0 < r) {
wait(&s);
printf("%ld\n", ftell(f));
}
end:
fclose(f);
return 0;
}
< /code>
с выходом fflush: < /p>
 1
1
< /code>
Без fflush: < /p>
 1
-1
Я заметил, что это изменилось после обновления Glibc с 2,41 до 2,42 (ранее это работало без Fflush).

Подробнее здесь: https://stackoverflow.com/questions/797 ... en-there-i
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Linux»