Ожидание открытия именованного канала в BASH? - PullRequest
0 голосов
/ 24 января 2011

У меня есть два сценария, один из которых принимает пару имен файлов в качестве входных данных и записывает данные в каналы (действительно передает каналы в качестве аргументов для программы, которую я написал). А затем другой вызывает первый сценарий с некоторыми именованными каналами в качестве входных данных, а затем вызывает некоторые другие программы для обработки данных из каналов.

Моя проблема в том, что мои каналы зависают, и я думаю, что происходит то, что первый сценарий bash вызывается в фоновом режиме из второго сценария, который затем немедленно запускает процессы потребителей, поэтому я думаю, что читатели открывается перед писателями (в нижнем индексе), что может привести к срыву?

Есть ли способ синхронизации на именованном канале и ожидания его открытия в bash?

1 Ответ

0 голосов
/ 24 января 2011

Не думаю, что это твоя проблема.

Если производитель начинает позже, чем потребитель, ничего страшного.

Пример:

Окно 1

$ mkfifo foo.pipe
$ cat foo.pipe
(hangs)

Окно 2

$ echo 'something' > foo.pipe

Окно 1

something
(exits)

Возможно, ваша проблема в том, что один процесс потребляет выходные данные fifo, затем производитель завершает работу, а затем вы пытаетесь снова прочитать с fifo.

В таком случае он зависнет на неопределенное время.

например. после вышеуказанной последовательности:

Окно 1

$ cat foo.pipe

зависает, пока вы не запустите другой echo something > foo.pipe.

...