Пишу демона, который спит до того момента, пока веб-скрипт не пошлет сигнал USR1. Потом он просыпается и делает свои грязные делишки. Если и демон и скрипт запущены от одного юзера, то все работает, но когда демон запустился от одного, а скрипт от www-data, то не работает. Я так понимаю это из за соображений безопасности, ведь у демона права рута. Как мне быть?
amorphius Создавать локальный сокет/изменять текстовый файл, который демон переодически будет читать/погуглить на тему IPC(inter-process communication)
создал сервер, ждет соединения на порт 2323, перловский скрипт создает сокет, конектится, вылетает ошибка Code: Software error: Can't create socket: Connection refused
запросто... сервер: Code: #!/usr/bin/perl use strict; use IO::Socket qw(:DEFAULT :crlf); use Digest::SHA1 qw(sha1_base64); use constant MY_PORT => 2323; $/ = CRLF; my $quit = 0; my $port = shift || MY_PORT; my $sock = IO::Socket::INET->new(Listen => 20, LocalPort => $port, Timeout => 60*60, Reuse => 1) or die "Can't create listening socket: $!\n"; while (!$quit) { next unless my $session = $sock->accept; while(<$session>) { my $hash = sha1_base64("some secret"); if ($hash eq $_) { warn "Catch something!"; } } close $session; } close $sock; клиент Code: #!/usr/bin/perl use strict; use CGI ':standart'; use DBI; use utf8; use CGI::Cookie; use Devel::Peek; use Pack; use HTML::Entities; use CGI::Carp qw(fatalsToBrowser warningsToBrowser); use Digest::SHA1 qw(sha1_base64); use IO::Socket qw(:DEFAULT :crlf); print "Content-type: text/html\n\n"; my $host = "127.0.0.1"; my $port = 2323; my $sock = IO::Socket::INET->new("$host:$port") or die "Can't create socket: $!\n"; print $sock sha1_base64("some secret"); close $sock;