perl - perl 中的信号处理

标签 perl

use strict;
use warnings;

print "hello\n";
sleep(10);
print "print before alarm\n";
alarm 5;

$SIG{'ALRM'} = \&alarm;
$SIG{'INT'}  = \&alarm;
$SIG{'TERM'} = \&alarm;

sub alarm {
   print "alarm signal hanndled\n";
}

我无法处理警报或按 ctrl+c 的信号。我搜索并发现这是一种进行信号处理的方法。我做错了什么?

最佳答案

首先,设置处理程序。然后,设置闹钟。最后,做耗时的操作( sleep )。你把它倒过来了:

#! /usr/bin/perl
use strict;
use warnings;

$SIG{'ALRM'} = \&alarm;
$SIG{'INT'}  = \&alarm;
$SIG{'TERM'} = \&alarm;

print "hello\n";
alarm 5;
sleep(10);
print "after sleep\n";

sub alarm {
   print "alarm signal handled\n";
}

关于perl - perl 中的信号处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27789452/

相关文章:

multithreading - 控制 Fork super 队列的长度

perl - 在perl中更改多维哈希的第一个键

mysql - 记录难以辨认的文件

perl - 我将如何使用 perl 递归搜索目录和所有子目录

perl - 如何使用 Moose 从属性的元对象创建值实例?

perl mocking 有没有办法模拟 $?

regex - 需要过滤日志以搜索最近 5 分钟的行

c++ - 从 Perl 脚本执行 C++ 程序;它需要编译器吗?

Perl LWP GET 或 POST 到 SNI SSL URL

perl - 如何在 emacs cperl 模式中更改标量变量的外观?