Devo realizzare un programmino che ne richiami un altro e scriva l'output di quest'ultimo su di una socket (praticamente la cosa che fa Apache con i CGI)...
Per ora faccio così:
- faccio partire una pipe (si dice "faccio partire una pipe"? :master: )
- Forko il programma
- il figlio chiude un lato della pipe e connette l'altro al suo stdout
- il figlio esegue quindi un programma (il cui stdout viene inviato alla pipe)
- il padre *dovrebbe* poter leggere la pipe, guardarne la dimensione ed inoltrarla ad una socket, ma come faccio tutto cio'?
Per ora ho fatto questo:codice:int pdes[2]; // [0] = lettura, [1] = scrittura pid_t pid; if ( pipe ( pdes ) ) { // apro la pipe printf ( "Errore: impossibile creare la pipe per la SSP.\n" ); exit ( 1 ); } if ( ( pid = fork() ) == -1 ) { // forko il programma printf ( "Errore: impossibile creare il figlio per la SSP.\n" ); exit ( 1 ); } if ( pid == 0 ) { // figlio: esegue il programma close ( pdes [0] ); // chiudo il capo di output verso il programma dup2 ( pdes [1], STDOUT_FILENO ); // associo il capo di input allo stdout per ascoltarlo execve ( prgName, NULL, NULL ); // eseguo il programma }

Rispondi quotando
