[РЕШЕНО] Perl: select не реагирует на запись в fifo

Модератор: Модераторы разделов

Ответить
IMB
Сообщения: 2559
ОС: Debian

[РЕШЕНО] Perl: select не реагирует на запись в fifo

Сообщение IMB »

Доброго дня!

Код: Выделить всё

my $fifo_name = dirname(tempdir) . '/ols';
my $fifo = mkfifo($fifo_name,
    POSIX::S_IRUSR | POSIX::S_IWUSR | POSIX::S_IRGRP | POSIX::S_IROTH)
    or die "Failed create FIFO $fifo_name: $!\n";
print "Use $fifo_name for send command\n";
my $select = IO::Select->new($fifo)
    or die "Failed create select: $!\n";

while (!$stop) {
    my @ready = $select->can_read(1);
    foreach my $fh (@ready) {
        if ($fh == $fifo) {
             fscanf $fifo, "%#x %#x", $x, $y;
             printf "Command with coordinat %#x %#x\n", $x, $y;
        }
    }
}

После запуска скрипта я пишу в созданное fifo: echo '0xa 0x1' > /tmp/fifo, команда прерывается только по Ctr-C и, к сожалению, срипт не подаёт никаких признаков получения данных.
Как средствами perl правильно организовать чтение из fifo?
Спасибо.
Спасибо сказали:
NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: [РЕШЕНО] Perl: select не реагирует на запись в fifo

Сообщение NickLion »

mkfifo не возвращает handle файла

Код: Выделить всё

mkfifo($fifo_name,
    POSIX::S_IRUSR | POSIX::S_IWUSR | POSIX::S_IRGRP | POSIX::S_IROTH)
    or die "Failed create FIFO $fifo_name: $!\n";
open my $fifo, '<', $fifo_name;
Спасибо сказали:
Ответить