我是Linux新手,並與管道使用C. 我試圖編寫一個程序執行命令:ps aux | grep root | wc -l
使用管道。模擬linux命令與管道不工作
問題是我的程序沒有在終端顯示任何東西,不像原來的命令!
這裏是我的代碼:
#include <stdlib.h> // exit
#include <stdio.h> // printf
#include <unistd.h> // execlp
int main(int argc, char *argv[]) {
int p1[2], p2[2];
int f1, f2;
if(pipe(p1) == -1) {
exit(1);
}
if(pipe(p2) == -1) {
exit(2);
}
f1 = fork();
if(f1 < 0) {
exit(1);
} else if(f1 == 0) {
close(p1[1]);
close(0);
dup2(p1[0], 0);
close(p1[0]);
close(p2[0]);
close(1);
dup2(p2[1], 1);
close(p2[1]);
execlp("grep", "grep", "root", NULL);
} else {
f2 = fork();
if(f2 < 0) {
exit(2);
} else if(f2 == 0) {
close(p2[1]);
close(0);
dup2(p2[0], 0);
close(p2[0]);
execlp("wc", "wc", "-l", NULL);
} else {
close(p1[0]);
close(1);
dup2(p1[1], 1);
close(p1[1]);
execlp("ps", "ps", "aux", NULL);
}
}
}
刪除問候[會議](http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-被刪除從帖子) –