Escrevendo para stdin e lendo a partir de stdout (Programação UNIX / LINUX / C)

Eu estava trabalhando em uma tarefa em que um programa pegou um descritor de arquivo como argumento (geralmente do pai em uma chamada executiva) e leu um arquivo e escreveu para um descritor de arquivos. Em meus testes, percebi que o programa iria trabalhe na linha de comando e não dê erro se eu usei 0, 1 ou 2 como descritor de arquivo. Isso fez sentido para mim, exceto que eu poderia escrever para stdin e exibi-lo na tel

Há uma explicação para isso? Eu sempre pensei que havia alguma proteção no stdin / stdout e você certamente não pode imprimir em stdin ou fgets no stdou

#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;
}

questionAnswers(6)

yourAnswerToTheQuestion