嗨,我有以下问题,我必须创建一个程序来执行这些Linux命令ls –la | sort | wc –l
但在我的代码中,我只能读取这个命令中的两个,是否可以与此同时帮助我?Pipes&exec&C
int main(){
pid_t pids[3];
int dados[2],dados2[2],i;
if(pipe(dados) == -1 && pipe(dados2) == -1){
perror("pipe failed");
exit(1);
}
for(i=0;i<3;i++){
pids[i] = fork();
if(pids[i] == 0){
if(i==0){
close(dados[0]);
dup2(dados[1],1);
close(dados[1]);
execlp("ls","ls","-la",NULL);
perror("exec failed");
exit(-1);
}
if(i==1){
close(dados[1]);
dup2(dados[0],0);
close(dados[0]);
close(dados2[0]);
dup2(dados2[1],1);
close(dados2[1]);
execlp("sort","sort",NULL);
perror("exec failed");
exit(-1);
}else{
close(dados2[1]);
dup2(dados2[0],0);
close(dados2[0]);
printf("aaaaaaaaaaaaaaaaaa");
execlp("wc","wc","-l",NULL);
perror("exec failed");
exit(-1);
}
}
}
/* Pai tem de fechar a sua copia da extremidade de escrita
para a leitura do sort desbloquear */
close(dados[1]);
close(dados2[0]);
for(i=0;i<3;i++){
wait(NULL);
}
return 0;
}
我不明白错过这个
已标记的Linux – 2015-03-31 01:14:13