Я использую linux в качестве операционной системы и пытаюсь передать три процесса с помощью pipe и file. Он должен работать с любым файлом, наложенным на STDIN. И труба работает нормально, но второй процесс недоступен для записи одного символа в файл правильно или третий для чтения. Во-первых, конечно, я инициализирую функцию в виде семплера и полублока, а также открывающая труба. Я ценю любую помощь, потому что я понятия не имею.Interprocess Communication with pipe and file
if (!(PID[1] = fork())) {
int BUF_SIZE = 4096;
char d[BUF_SIZE];
while (fgets (d, BUF_SIZE, stdin) != NULL) {
write (mypipe[1], &d, BUF_SIZE);
}
}
if (!(PID[2] = fork())) {
int reading_size = 0;
char r;
close (mypipe[1]);
semlock (semid1);
while (reading_size = read (mypipe[0], &r, 1)) {
if ((file = fopen ("proces2.txt", "w")) == NULL) {
warn ("error !!!");
exit (1);
}
fputc (r, file);
fclose (file);
semunlock (semid2);
}
}
if (!(PID[3] = fork())) {
char x;
semlock (semid2);
do {
if ((plikProces3 = fopen ("proces2.txt", "r")) == NULL) {
warn ("Blad przy otwarciu pliku do odczytu !!!");
exit (1);
}
i = getc (plikProces3);
o = fprintf (stdout, "%c", i);
fclose (plikProces3);
semunlock (semid1);
} while (i != EOF);
}
О, я не хочу обескураживать, сначала fork() и трубы обязательно будут странными :) – Rob11311