/*************************************************************************************************************************************/ /* */ /* T R A N S M I S S I O N D E ' STANDARD_IN ' V E R S ' STANDARD_OUT ' : */ /* */ /* */ /* Author of '$xtc/inout.01$c' : */ /* */ /* Jean-Francois COLONNA (LACTAMME, AAAAMMJJhhmmss). */ /* */ /*************************************************************************************************************************************/ #include <stdio.h> #define STANDARD_IN \ 0 #define STANDARD_OUT \ (STANDARD_IN+1) #define STANDARD_ERREUR \ (STANDARD_OUT+1) #define BUFFER \ 10 \ /* Taille des buffers d'ecriture et de lecture de la commande distante. */ #define LWRITE \ BUFFER \ /* Nombre d'octets a ecrire par 'write(...)'. */ #define LREAD \ BUFFER \ /* Nombre d'octets a lire par 'read(...)'. */ main() { char buffer_du_write[LWRITE]; int longueur_du_write; /* Buffer destine aux arguments de la commande distante. */ int iterer_le_write=0; /* =0 : iterer le 'write(...)', #1 : ne plus iterer. */ char buffer_du_read[LREAD]; int longueur_du_read; /* Buffer destine aux resultats de la commande distante. */ int iterer_le_read=0; /* =0 : iterer le 'read(...)', #1 : ne plus iterer. */ while (iterer_le_write == 0) { longueur_du_write=read(STANDARD_IN,buffer_du_write,LREAD); if (longueur_du_write > 0) { write(STANDARD_OUT,buffer_du_write,longueur_du_write); /* Transfert de 'STANDARD_IN' vers 'STANDARD_OUT'. */ } else { iterer_le_write++; } } close(STANDARD_OUT); close(STANDARD_IN); }