关于带有os模块的python中的信号

时间:2013-02-25 09:59:23

标签: python

我正在研究python中的信号主题并遇到了这个例子

import signal
import os
import time

def receive_signal(signum, stack):
    print 'Received:', signum

signal.signal(signal.SIGUSR1, receive_signal)
signal.signal(signal.SIGUSR2, receive_signal)

print 'My PID is:', os.getpid()

while True:
    print 'Waiting...'
    time.sleep(3)

现在他正在使用此

发送信号
I ran signal_signal.py in one window, then kill -USR1 $pid, kill -USR2 $pid, and kill -INT $pid in another.

我几乎没有问题

  1. linux kill命令怎么能发送siganls。我不明白
  2. kill -USR1来自USR来自哪里,什么参数是kill命令期待
  3. 我认为kill只会杀死进程id,为什么我们将参数传递给kill命令

1 个答案:

答案 0 :(得分:6)

kill命令有点错误。它向进程发送信号,默认信号SIGTERM,进程终止。使用kill发送SIGUSR*信号非常正确。

当您对UNIX命令有疑问时,最好的办法是在命令行输入man <commandname>man kill会告诉你所有这些以及更多。

尝试运行kill -l以获取支持的信号列表。您可以按编号,符号名称和SIG前面的符号名称指定信号。您可以使用kill -10kill -USR1kill -SIGUSR1,所有人都会发送相同的信号。有关详细信息,请参阅kill manpage