Просмотр полной версии : Как послать сообщение другому процессу?
amorphius
03.05.2009, 13:53
Пишу демона, который спит до того момента, пока веб-скрипт не пошлет сигнал USR1. Потом он просыпается и делает свои грязные делишки. Если и демон и скрипт запущены от одного юзера, то все работает, но когда демон запустился от одного, а скрипт от www-data, то не работает. Я так понимаю это из за соображений безопасности, ведь у демона права рута.
Как мне быть?
amorphius Создавать локальный сокет/изменять текстовый файл, который демон переодически будет читать/погуглить на тему IPC(inter-process communication)
amorphius
04.05.2009, 16:56
создал сервер, ждет соединения на порт 2323, перловский скрипт создает сокет, конектится, вылетает ошибка
Software error:
Can't create socket: Connection refused
amorphius
07.05.2009, 08:24
еще идеи будут?:)
создал сервер, ждет соединения на порт 2323, перловский скрипт создает сокет, конектится, вылетает ошибка
Software error:
Can't create socket: Connection refused
Код покажи, тогда может чем и поможем.
amorphius
09.05.2009, 15:58
запросто...
сервер:
#!/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;
клиент
#!/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;
amorphius
11.05.2009, 00:48
идеи кончились?
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot