İki alt işlem oluşturmaya ve bunları pipetlemeye çalışıyorum, ancak ikinci çocuk ilk çocuk tarafından üretilen çıktıyı sıralamıyor. ls yapar. Neyi yanlış yapıyorum?İki alt işlem için bir tane, biri diğeri için sıralama, ancak sıralama çalışmıyor
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char *argv[]) {
int pipefd[2];
pid_t ls_pid, wc_pid;
pipe(pipefd);
if ((ls_pid = fork()) == 0) {
dup2(pipefd[1],STDOUT_FILENO);
close(pipefd[0]);
execl("/bin/ls", "ls", 0);
perror("exec ls failed");
exit(EXIT_FAILURE);
}
if ((wc_pid = fork()) == 0) {
dup2(pipefd[0], STDIN_FILENO);
close(pipefd[1]);
execl("/usr/bin/sort", "sort", NULL);
perror("exec wc failed");
exit(EXIT_FAILURE);
}
return EXIT_SUCCESS;
}
"ama ikinci çocuk çıktısını sıralamak değildir". Kesin davranış nedir? – kaylum
ikinci çocuk sadece ls her öğeyi yeni bir satır – freakyfrog
Tamam, ama çıktı sıralanır? Kodunu denedim ve benim için çalıştı. – kaylum