Я сейчас пишу бот IRC. Скрипты загружаются как модули perl в ZNC , но бот отключается с ошибкой ввода / вывода, если я создаю разветвленный процесс. Это рабочий пример сценария без разветвления, но он заставляет бота зависать до тех пор, пока сценарий не выполнит свою задачу.
package imdb;
use warnings;
use strict;
sub new
{
my ($class) = @_;
my $self = {};
bless( $self, $class );
return( $self );
}
sub OnChanMsg
{
my ($self, $nick, $channel,$text) = @_;
#unless (my $pid = fork()) {
my $result = a_slow_process($text);
ZNC::PutIRC( "PRIVMSG $channel :$result" );
# exit;
#}
return( ZNC::CONTINUE );
}
sub OnShutdown
{
my ( $me ) = @_;
}
sub a_slow_process {
my $input = shift;
sleep 10;
return "You said $input.";
}
1;
Код, который вызывает ошибку, закомментирован. Как мне это исправить?
Отредактировано, чтобы добавить : Мне сказали, что ZNC :: PutIRC не следует помещать в дочерний процесс.