Ecriture sur stdin et lecture depuis stdout (programmation UNIX / LINUX / C)

Je travaillais sur une mission où un programme a pris un descripteur de fichier comme argument (généralement à partir de la mère dans un exec appel) et de les lire à partir d'un fichier et écrit à un descripteur de fichier, et dans mes tests, j'ai réalisé que le programme de travail de la ligne de commande et ne pas donner une erreur si j'ai utilisé de 0, 1 ou 2 en tant que descripteur de fichier. Qui fait sens pour moi, sauf que je pourrais écrire sur stdin et l'afficher sur l'écran.

Est-il une explication pour cela? J'ai toujours pensé qu'il y avait une certaine protection sur stdin/stdout et vous ne pouvez certainement pas fprintf à stdin ou fgets de 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;
}

source d'informationauteur Tim