Escribir a stdin y leer desde stdout (Programación UNIX / LINUX / C)
Estaba trabajando en una tarea en la que un programa tomaba un descriptor de archivo como argumento (generalmente del padre en una llamada ejecutiva) y leía un archivo y escribía en un descriptor de archivo, y en mis pruebas, me di cuenta de que el programa trabajar desde la línea de comandos y no dar un error si utilicé 0, 1 o 2 como descriptor de archivo. Eso tenía sentido para mí, excepto que podía escribir en stdin y mostrarlo en la pantalla.
¿Hay alguna explicación para esto? Siempre pensé que había algo de protección en stdin / stdout y ciertamente no se puede imprimir a stdin o fgets desde 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;
}