Возникли проблемы с открытием FIFO в C - PullRequest
3 голосов
/ 30 декабря 2010

У меня проблемы с открытием FIFO в C .. сначала я создал их с помощью функции mkfifo () с разрешением: 0777, и когда я попытался открыть их, удалось открыть только первый FIFO, затемзастрянет при открытии второго FIFO, и это мой код:

fd1 = open("FIFO1_PATH", O_WRONLY );
fd2 = open("FIFO2_PATH", O_WRONLY );

Это не будет выполнено, но после того, как я прокомментирую вторую строку, оно выполнится!Существует ли ограничение на количество открытых FIFO на процесс?Я не знаю, почему это происходит ... Я просто потратил 3 часа, пытаясь выяснить, в чем проблема, но безрезультатно: (

Ответы [ 2 ]

5 голосов
/ 30 декабря 2010

Я только что понял:)

Я должен позволить процессу открытия ждать, пока какой-нибудь другой процесс откроет FIFO для чтения (и это будет заблокированное чтение) .. делая сон на записьпроцесс Я гарантирую, что другой процесс будет открыт для чтения ..

0 голосов
/ 30 декабря 2010

Чтобы ответить на ваш вопрос об ограничениях - по умолчанию в Linux используется 1024 файловых дескриптора процесса.Ваша проблема, вероятно, не в том, чтобы открыть второй FIFO для чтения, поэтому открыть для записи блоков.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...