Sto cercando di implementare un tubo multiplo per il mio guscio in C.Coding pipe multiple in C
Tutto quello che ho è una funzione tubo che pipe un | b ma non un | b | c.
int c[2];
int returnv;
pid_t id;
pipe(c);
pid = fork()) == 0
if (pid)
{
dup2(c[1], 0);
close(p[1]);
close(p[1]);
execvp(array(0), array);
}
if ((pid = fork()) == 0)
{
dup2(p[0], 1);
close(p(0));
close(p[0]);
returnv = execvp(array[0], array);
}
close(p[1]);
wait(NULL);
wait(NULL);
wait(NULL);
return returnv;
E questa è una seconda versione:
int i = 0;
while (i < x)
{
pipe(c);
if ((pid = fork()) == 0)
{
dup2(t[i], 1);
if (i < 2)
dup2(p[0], 1);
close(p[1]);
r= execvp(cmd[i][0], cmd[i]);
}
wait(NULL);
close(p[0]);
i += 1;
t[i] = p[1];
Come posso aggiungere il po 'di qualcosa che renderà questo codice gestire tubo multipla per favore? Grazie mille in anticipo!
In realtà si chiama fork() due volte, mentre è necessario solo una volta. Questo perché fork() restituisce due volte: 0 per il processo figlio e> 1 per il processo padre (di solito è il figlio pid). Non penso che tu abbia bisogno di tutto quel codice per fare quello che ti serve. – none
Ho passato così tanto tempo su questo, questa è l'unica cosa che funziona ^^ Immagino che ci sia solo una chiamata a execvp necessaria per multi pipe ma non riesco a farlo funzionare. :( – user2145240
Non rimuovere il codice dal post invalida le risposte – FDinoff