Программа на си,задание такое:1 процесс открывает файл порождает 2 процесс.Один из них записывает 1 байт в файл подает сигнал другому,второй читает и выводит на экран.Повторить N(у меня 6) циклов запись\чтение.
Проблема:скажите что не так в моем коде?Оно вводит в файл 012345,но выводит на консоль(cygwin,в прикрепленных скрин консоли) -1 шесть раз.
Программа:#include
#include
#include

int main(void) {
FILE *fp;
char name[] = "f.txt";//открытие файла

if ((fp = fopen(name, "w+")) == NULL)

{
printf("Не удалось открыть файл");
return 0;
}

char message = '1';//1 байт
char ch;
int pid = fork();
if (pid < 0) {
printf("Error in fork\n");
return -1;
}

for (int i = 0; i < 6; ++i) //6 ,цикл
{
if (pid > 0) {
raise(SIGSTOP);
fprintf(fp,"%d\n",i);
fflush(fp);
kill(pid, SIGCONT);
} else {
ch = fgetc(fp);

printf("\r%d\n",ch);//вывод на консоль
fflush(NULL);
kill(getppid(), SIGCONT);
raise(SIGSTOP);
}
}
fclose(fp);
return 0;
}

nikastezkaowl9vp nikastezkaowl9vp    2   19.04.2020 12:22    4

Другие вопросы по теме Информатика