我是Perl的全新,并试图添加function,我的脚本捕捉键盘中断和术语信号,如果抛出,然后发出一个 *** 作系统命令来处理。 在没有信号抛出和脚本执行成功的情况下(注意END块),还需要发出相同的OS命令和sub。 据我所知,从研究和testing,你必须注册每个信号的信号处理程序。 在每种情况下,他们都需要触发相同的子。 这是可能的做一个$ SIG,或者我必须注册两个,每个信号一个? 这是我的代码。
sub issueKdestroy{ system("kdestroy -q"); exit(1); } $SIG{INT} = (&issueKdestroy); $SIG{TERM} = (&issueKdestroy); END{ issueKdestroy(); }
从testing,这不起作用:
$SIG{'INT','TERM'} = (&issueKdestroy);
在上面的代码中它不会识别INT或TERM。 build议?
SIGCHLD信号处理
为什么shell在后台进程中忽略SIGINT和SIGQUIT?
SIGStop和SIGTSTP会损坏JVM吗?
C信号处理程序中的竞态条件
“命名pipe道”通常如何实施“握手”?
在linux中检测system()函数返回值的含义
哪个线程处理信号?
从Java调用脚本,接收到sigpipe信号
在C ++中,我可以使用multithreading工具将UNIX信号与主程序同步吗?
SDL / C ++ OpenGL程序,如何阻止SDL捕获SIGINT
$SIG{'INT','TERM'}不是你的意思; 为这两个键分配值,使用散列片(并提供两个值):
@SIG{'INT','TERM'} = (&issueKdestroy,&issueKdestroy);
用$来代替,就是调用perl4风格的多维数组模拟,允许指定多个键,但将它们全部存储在一个散列中,相当于:
$SIG{ join $;,'INT','TERM' }
$; 是默认的chr(0x1c) 。
总结以上是内存溢出为你收集整理的perl多个sig处理程序指向一个子例程全部内容,希望文章能够帮你解决perl多个sig处理程序指向一个子例程所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)