PS、WC、grep などの UNIX コードを C コードに実装する必要があります。コードの各部分を実行する子を作成するパイプとフォークがありますが、毎回閉じる必要があるプロセスの数について少し混乱しています。これまでのコードは次のとおりですが、権利が閉じられていないため、明らかに機能しません。
int main() {
int pfd[2];
int pid;
if (pipe(pfd) == -1) {
perror("pipe failed");
exit(-1);
}
if ((pid = fork()) < 0) {
perror("fork failed");
exit(-2);
}
if (pid == 0) {
close(pfd[1]);
dup2(pfd[0], 0);
close(pfd[0]);
if (pipe(pdf) == -1) {
perror("pipe failed");
exit(-1);
}
if (pid ==0) {
close(pfd[1]);
dup2(pfd[0], 0);
close(pfd[0]);
execlp("wc", "wc", (char *) 0);
perror("wc failed");
exit(-3);
}
else
close(pfd[1]);
dup2(pfd[0], 0);
close(pfd[0]);
execlp("grep", "grep" "1111", (char *) 0);
perror("grep failed");
exit(-3);
}
else {
close(pfd[0]);
dup2(pfd[1], 1);
close(pfd[1]);
execlp("ps", "ps", "auxj", (char *) 0);
perror("ps failed");
exit(-4);
}
exit(0);
}
どんな助けでも素晴らしいでしょう