Запись в stdin и чтение из stdout (Программирование в UNIX / LINUX / C)
Я работал над заданием, в котором программа взяла дескриптор файла в качестве аргумента (обычно от родителя при вызове 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;
}