Howto pipe в Perl демон в исполнении - PullRequest
0 голосов
/ 03 июля 2011

Я знаю, как передать в скрипт perl, просто выполнив что-то вроде этого:

command | script.pl

Внутри script.pl я получил:

while(<STDIN>){...

и так далее, ноЯ демонизировал скрипт и хочу знать, как я могу передать команду скрипту, пока он работает как демон.

Есть предложения?

Спасибо

1 Ответ

0 голосов
/ 03 июля 2011

STDIN должен быть закрыт при демонизации из соображений безопасности.

Вам нужно создать сокет (или, возможно, fifo) и прочитать из него. Я бы предложил доменные сокеты Unix , см. Главу 17.6 Perl Cookbook .

Трудно быть более точным, поскольку это зависит от того, что делает ваш демон.


Обновление:

На самом деле, теперь, когда я думаю об этом, если программа запускается на * nix-боксе, вы можете оставить свой скрипт таким, какой он есть, и использовать вместо него inetd . Inetd прослушает для вас сокет и запустит ваш демон при соединении, соединяя сокет и STDIN / STDOUT в вашей программе. У меня нет опыта использования inetd с доменными сокетами, но поверхностное поиск в Google указывает, что по крайней мере некоторые реализации поддерживают доменные сокеты.

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