Erst mal Hallo ist mein erster Beitrag hier.
Werde wohl in nechster Zukunft öfters hier posten wies aussieht
Also wir behandeln gerade Pipes und sollen dafür in C die Linux-Shell anweisung nachbilden:
"ps aux | sort -n | head -10"
Denke das dürfte eigentlich ganz einfach sein aber beim kompilieren kommt schon ein fehler (head: Fehler beim Lesen von „Standardeingabe“: Bad file descriptor
), hoff kann mir jemand helfen, bin schon am verzeweifeln:
Code
#include <unistd.h>
#include<stdio.h>
int main(){
int ret,pid,pid2,fd[2],fd2[2];
pipe(fd);
pipe(fd2);
pid = fork();
if (pid==0) {
dup2(fd[1], STDOUT_FILENO);
close(fd[0]);
close(fd[1]);
ret=execlp ("ps", "ps", "aux", NULL);
} else {
pid2=fork();
if(pid2==0)
{
dup2(fd[0], STDIN_FILENO);
dup2(fd2[1], STDOUT_FILENO);
close(fd[0]);
close(fd[1]);
close(fd2[0]);
close(fd2[1]);
ret=execlp ("sort", "sort", "-n", NULL);
}
else {
dup2(fd2[1], STDIN_FILENO);
close(fd[0]);
close(fd[1]);
ret=execlp ("head", "head", "-10", NULL);
}
}
return 0;
}
Alles anzeigen