Я работал над заданием, в котором программа взяла дескриптор файлов в качестве аргумента (как правило, от родителя в вызове Exec) и прочитал из Файл и написал в файловый дескриптор, а в моем тестировании я понял, что программа будет работать с командной строки и не дает ошибку, если я использовал 0, 1 или 2 в качестве дескриптора файла. Это имело смысл мне, за исключением того, что я мог бы написать в Stdin и у него покажет на экране.
Есть пояснение для этого? Я всегда думал, что на stdin / stdout была некоторая защита, и вы, безусловно, не можете FPRINTF stdin или fgets из Stdout.
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
int main()
{
char message[20];
read(STDOUT_FILENO, message, 20);
write(STDIN_FILENO, message, 20);
return 0;
}