Запись в 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;
}

Ответы на вопрос(6)

Ваш ответ на вопрос