PDA

View Full Version : [C] Creare una pipe circolare


volly86
02-01-2009, 09:35
Ciao a tutti, dovrei creare un programma in c che crei una pipe circolare tra processi. In pratica lanciando

./circPipe.o <comando1> <param1> <param2> { <comando2> <param1> <param2> { <comando3> <param1> <param2>

Il programma esegue il primo comando (tutti i comandi sono programmi di shell, ad esempio ls, grep...) con tutti i suoi parametri e passa l'output al secondo comando e così via fino all'ultimo comando che passa l'output al primo comando.

Ho provato a creare una pipe semplice che sembra funzionare ma ora non riesco a capire come prendere l'output del primo comando e passarlo ad un secondo comando (diciamo che per il momento lo implemento nel codice poi dovrò recuperarlo da parametro) e così via fino a creare una pipe circolare.

Grazie
Riccardo

int main(void)
{
char line[MAXLINE];
FILE *fpin;

if ( (fpin = popen("ls", "r")) == NULL)
perror("popen error");

for ( ; ; ) {

fputs("prompt> ", stdout);
fflush(stdout);
if (fgets(line, MAXLINE, fpin) == NULL) /* read from pipe */
break;
if (fputs(line, stdout) == EOF)
perror("fputs error to pipe");
}
if (pclose(fpin) == -1)
perror("pclose error");
putchar('\n');
exit(0);
}