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
}