Size: a a a

2020 December 19

АК

Алексей Клименко... in use Perl or die;
Павел Колганов ☭
Есть одна программулинка чисто под винду (требование такое было - писать под винду, WSL тогда не было), в которой ctrl+c обрабатывается. И работает ж.
Проверил, работает: perl -E "$SIG{INT} = sub { say 123; exit; }; sleep(1) for (1..10);"
Хм…
источник

a

allter in use Perl or die;
Павел Колганов ☭
Есть одна программулинка чисто под винду (требование такое было - писать под винду, WSL тогда не было), в которой ctrl+c обрабатывается. И работает ж.
Проверил, работает: perl -E "$SIG{INT} = sub { say 123; exit; }; sleep(1) for (1..10);"
а что за перл? ActiveState?
источник

VG

Vadim Goncharov in use Perl or die;
Павел Колганов ☭
Есть одна программулинка чисто под винду (требование такое было - писать под винду, WSL тогда не было), в которой ctrl+c обрабатывается. И работает ж.
Проверил, работает: perl -E "$SIG{INT} = sub { say 123; exit; }; sleep(1) for (1..10);"
видимо AnyEvent недопортирован
источник

VG

Vadim Goncharov in use Perl or die;
в его коде и так куча матов про винду, впрочем :)
источник

ПК

Павел Колганов ☭... in use Perl or die;
allter
а что за перл? ActiveState?
Strawberry 5.30.1 32-битная версия
источник

АК

Алексей Клименко... in use Perl or die;
say 'START';
my $cond = AnyEvent->condvar;
$SIG{INT} = sub {
 say "Ctrl+C";
 $cond->send;
};
$cond->recv;
say 'EXIT';

Не вызвалось.

Видимо, пока выполнение в ->recv, не берёт.
источник

VG

Vadim Goncharov in use Perl or die;
а без AnyEvent - берёт?
источник

АК

Алексей Клименко... in use Perl or die;
Vadim Goncharov
а без AnyEvent - берёт?
Ну вон тот однострочник выше – сработал, вроде.
источник

VG

Vadim Goncharov in use Perl or die;
Алексей Клименко
say 'START';
my $cond = AnyEvent->condvar;
$SIG{INT} = sub {
 say "Ctrl+C";
 $cond->send;
};
$cond->recv;
say 'EXIT';

Не вызвалось.

Видимо, пока выполнение в ->recv, не берёт.
осталось проверить последний вариант - без $cond->send;
источник

АК

Алексей Клименко... in use Perl or die;
Так у меня say не сработало же!
источник

VG

Vadim Goncharov in use Perl or die;
всё равно проверить, мало ли!
источник

a

allter in use Perl or die;
Ещё имеет смысл попробовать с другим евентлупом, но подозреваю, что AE тогда перебор.
источник

VG

Vadim Goncharov in use Perl or die;
непонятно, зачем всё это, если cleanup можно и в END делать
источник

VG

Vadim Goncharov in use Perl or die;
ну, если он только не требует какой-то посылки в сеть и прочего продолжения работы лупа :)
источник

АК

Алексей Клименко... in use Perl or die;
Vadim Goncharov
всё равно проверить, мало ли!
Эм-м…

say 'START';
my $cond = AnyEvent->condvar;
$SIG{INT} = sub {
 say "Ctrl+C";
 $cond->send;
};
my $signal = AnyEvent->signal( signal => 'INT', cb => sub {
 say "INT recvd";
 $cond->send;
});
$cond->recv;
say 'EXIT';


Вот так внезапно работает, только с задержкой в 8-10 секунд после отправки Ctrl+C.
Что?
источник

VG

Vadim Goncharov in use Perl or die;
O___o
источник

VG

Vadim Goncharov in use Perl or die;
а как именно работает?
источник

АК

Алексей Клименко... in use Perl or die;
Выполняется say "Ctrl+C";
Но если убрать signal – то не выполняется вообще.
источник

VG

Vadim Goncharov in use Perl or die;
жесть
источник

АК

Алексей Клименко... in use Perl or die;
Может этот таймаут где-то подкрутить можно?
Меня устроит одна секунда, например.
источник