Я пытаюсь решить следующую проблему: дано 2 файла: "names.txt" и "phone.txt".В «names.txt» есть имя в каждой строке, а в «phone.txt» есть номер телефона в каждой строке.name.c читает строку за строкой из «names.txt», phone.c читает строку за строкой из «phone.txt».И для name.c, и для phone.c потребуется синхронизировать их выполнение (используя каналы связи fifo), так что там будут напечатаны имя и номер телефона.
Я попытался обменять fifo1 на fifo2 100 разтак как это казалось проблемой в прошлый раз, но на этот раз безуспешно
это часть phone.c с использованием каналов fifo:
if (-1==mkfifo("fifo1",0600))
{
if (errno!=EEXIST)
perror("crearea a esuat");
}
if (-1==mkfifo("fifo2",0600))
{
if (errno!=EEXIST) perror("crearea a esuat");
}
fifo1=open("fifo1",O_RDONLY);
fifo2=open("fifo2",O_WRONLY);
for (int j=0;j<=n;j++)
{
read(fifo1,&ch,1);
printf("%s",string[j]);
write(fifo2,&ch,1);
}
и эта часть используетКаналы fifo из name.c
if (-1==mkfifo("fifo1",0600) )
{
if (errno!=EEXIST)
perror("crearea a esuat");
}
fifo1=open("fifo1",O_WRONLY);
fifo2=open("fifo2",O_RDONLY);
for (int j=0;j<=n;j++)
{
printf("\n%s ",string[j]);
write(fifo1,&ch,1);
read(fifo2,&ch,1);
}
Печатает случайное число, например «2742», а затем содержимое «name.txt», но после каждого имени номера телефонов не печатаются.