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