在linux中创建一个新信号

ban*_*ban 2 linux debugging perl signals process

有没有办法在linux中创建自定义信号.就像让我们说"回声疯狂"在文件中执行一样?无论何时执行该信号,我都会使用该信号停止该过程......此外,我还想使用带有新信号的perl Enbugger.有没有办法做到这一点?我从http://metacpan.org/pod/Enbugger找到了这个

 use Enbugger::OnError qw( USR1 USR2 INT HUP );
Run Code Online (Sandbox Code Playgroud)

其中USR1和USR2是用户定义的信号.

mob*_*mob 7

Perl中的信号处理涉及操作系统的信号功能,通常具有预定义和固定的信号集.但是许多系统确实分配了没有任何特定目的的"额外"信号,这些信号可以由用户进程使用.例如,我的Red Hat系统提供以下信号:

$ kill -l
 1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL       5) SIGTRAP
 6) SIGABRT      7) SIGBUS       8) SIGFPE       9) SIGKILL     10) SIGUSR1
11) SIGSEGV     12) SIGUSR2     13) SIGPIPE     14) SIGALRM     15) SIGTERM
16) SIGSTKFLT   17) SIGCHLD     18) SIGCONT     19) SIGSTOP     20) SIGTSTP
21) SIGTTIN     22) SIGTTOU     23) SIGURG      24) SIGXCPU     25) SIGXFSZ
26) SIGVTALRM   27) SIGPROF     28) SIGWINCH    29) SIGIO       30) SIGPWR
31) SIGSYS      34) SIGRTMIN    35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3
38) SIGRTMIN+4  39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8
43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7
58) SIGRTMAX-6  59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
63) SIGRTMAX-1  64) SIGRTMAX
Run Code Online (Sandbox Code Playgroud)

您可以看到信号34到64都用SIGRTMIN和表示SIGRTMAX.这些是用户可以征服的信号,而不用担心干扰系统通常想要做的任何事情.在Perl中,您可以使用助记符分配信号处理程序,NUM35并使用助记符(kill 'NUM37', $pid)或仅使用信号编号(kill 37, $pid)发送信号.

  • 命令不作为信号运行.命令可以发送信号,在Perl中,这是使用kill builtin完成的.命令可以接收信号,在Perl中,您可以管理(对于大多数信号)当您收到带有%SIG变量的信号时会发生什么.信号****不发送到文件.信号被发送到进程(或线程,这是另一种蠕虫). (2认同)