Mods
14-06-2007, 19:30
Volevo realizzare un semplice programma in C che producesse come risultato il piping "ls | wc" ... e sto impazzendo! Non capisco proprio dove sia l'errore... se guardo nella process Table di Suse si pianta il tutto sulle due execlp.
Se invece, anche se privo di senso, metto in entrambi le execlp con "ls", da fare "ls | ls" non si pianta un bel niente ed esce il risultato...
Qualcuno non è che mi sa dire dov'è l'errore?
#include<stdio.h>
#include<unistd.h>
int main(){
int p[2];
pipe(p);
if(fork()){
close(0);
dup(p[0]);
execlp("wc","wc",0);
}
else{
close(1);
dup(p[1]);
execlp("ls","ls",0);
}
}
Se invece, anche se privo di senso, metto in entrambi le execlp con "ls", da fare "ls | ls" non si pianta un bel niente ed esce il risultato...
Qualcuno non è che mi sa dire dov'è l'errore?
#include<stdio.h>
#include<unistd.h>
int main(){
int p[2];
pipe(p);
if(fork()){
close(0);
dup(p[0]);
execlp("wc","wc",0);
}
else{
close(1);
dup(p[1]);
execlp("ls","ls",0);
}
}