![]() |
Hej och välkommen från USA till UNIX och Linux Forum! Tack för ditt besök och gå med i vår globala gemenskapen.
|
|
google unix.com
|
|||||||
| Forum | Registrera | Forum Regler | Länkar | Album | FAQ | Medlemslista | Kalender | Söka | Dagens inlägg | Markera forum som lästa |
| High Level Programming Post frågor om C, C + +, Java, SQL och andra programmeringsspråk här. |
Mer UNIX och Linux Forum Ämnen Du kan hitta Helpful
|
||||
| Tråd | Thread Starter | Forum | Svar | Senaste Inlägg |
| Frågan om grep, styckat och rörsystem | dyrt | Shell-programmering och Skript | 1 | 02-28-2008 11:12 |
| Rörledningsmaterial fd från ett manus | km / h | Shell-programmering och Skript | 2 | 10-11-2007 03:54 |
| Rörsystem i UNIX | simo007 | UNIX for Dummies Frågor & Svar | 3 | 05-23-2007 02:40 |
| rörledning | lnatz | Shell-programmering och Skript | 1 | 07-14-2006 02:30 |
| Hjälp (Rörledningsmaterial ls, tr, i bitar) | scan | Shell-programmering och Skript | 2 | 02-11-2006 08:40 |
![]() |
|
|
LinkBack | Thread Tools | Sök i denna tråd | Rate Thread | Visningslägen |
|
|
|
||||
|
Rörledningsmaterial Fråga
Jag har ett rörsystem fråga, jag försöker att genomföra rörledning på mitt eget skal, och jag har lite problem ... esentially Jag försöker att göra något för att göra kommandot | kommando | kommando.
Jag kan få den att fungera bra om de senaste pipe-kommandot inte är kluven, men kör i tanken och sedan utgångar .. men jag behöver det till bord. I tryed följande, men det kommer att hänga .. några förslag? Jag har en känsla av att det har något att göra med att stänga / öppnande deskriptorerna men jag vet inte ... tack.: Kod:
int pipe1[2], pipe2[2];
pipe(pipe1);//create first pipe
pid_t PID=fork();
if(PID==0){
close(1);
dup(pipe1[1]);
close(pipe1[0]);
close(pipe1[1]);
execvp(*argv,argv);
printf("operation failed");
} else {
pipe(pipe2);
pid_t PID2=fork();
if (PID2==0) {
close(0);
dup(pipe1[0]);
close(1);
dup(pipe2[1]);
close(pipe1[0]);
close(pipe1[1]);
close(pipe2[0]);
close(pipe2[1]);
execvp(*argv2, argv2);
} else {
pid_t PID3=fork();
waitpid(PID3,&status,0);<-----Not sure about this
if(PID3==0){
close(0);
dup(pipe2[0]);
close(pipe1[0]);
close(pipe1[1]);
close(pipe2[0]);
close(pipe2[1]);
execvp(*argv3, argv3);
}
}
}
Senast redigerad av Yogesh Sawant; 04-25-2008 vid 03:33.. Orsak: lagt till kod taggar |
![]() |
| Komihåglista |
| Thread Tools | Sök i denna tråd |
| Visningslägen | Betygsätt denna tråd |
|
|