В UNIX
Из этого вытекает не самый очевидный эффект: если закрыть дескриптор
Например, в такой ситуации:
вызов
Причина простая: ОС обычно выдаёт минимальный свободный дескриптор. Освободили
Небольшая деталь, но именно на таких вещах и строится глубокое понимание UNIX и работы с вводом-выводом.
#unix #stdout #cprogramming
stdout — это обычный файловый дескриптор с номером 1.Из этого вытекает не самый очевидный эффект: если закрыть дескриптор
1, следующий открытый файл вполне может занять его место.Например, в такой ситуации:
close(1);
FILE *f = fopen("output.txt", "w");
printf("hello\n");вызов
printf может отправить текст не в терминал, а прямо в output.txt.Причина простая: ОС обычно выдаёт минимальный свободный дескриптор. Освободили
1 — значит, он снова доступен для нового файла.Небольшая деталь, но именно на таких вещах и строится глубокое понимание UNIX и работы с вводом-выводом.
#unix #stdout #cprogramming