Что произойдет, если я открою FIFO для чтения и записи в одной программе? - PullRequest
0 голосов
/ 11 июня 2019

Я начал изучать каналы и FIFO, и я точно не понимаю, что происходит в фоновом режиме в этой ситуации. Почему в консоли ничего не печатается? Никакой другой процесс не открывает "abc" FIFO

`int r,w,n=7;
r=open("abc",O_RDONLY);
n--;
w=open("abc",O_WRONLY);
n--;
printf("%d",n);`

1 Ответ

0 голосов
/ 11 июня 2019

Как объясняет https://stackoverflow.com/a/23435538/139985, когда вы открываете FIFO, вызов открытия будет блокироваться, пока система не получит соответствующее открытие на другой стороне того же FIFO.

В вашем примере выиметь однопоточную C-программу, которая пытается открыть обе стороны одну за другой.Это не сработает.

Однако, если вы перепроектируете свою программу для использования двух потоков и откроете концы чтения и записи FIFO в разных потоках, это должно сработать.Один поток будет блокироваться в open, пока другой поток не вызовет open.

...