Ich bin neu in Linux und mit Rohren mit C. Ich versuche, ein Programm mit dem Befehl: ps aux | grep root | wc -l
mit Rohren zu schreiben.Simulation von Linux-Befehl mit Rohren funktioniert nicht
Das Problem ist, dass mein Programm nichts im Terminal zeigt, nicht wie der ursprüngliche Befehl!
Hier ist mein Code:
#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);
}
}
}
entfernt Grüße per [Konvention] (http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations- be-removed-from-posts) –