ls0f / my-issues

0 stars 0 forks source link

使用信号通信 #16

Open ls0f opened 8 years ago

ls0f commented 8 years ago

使用信号通信,是IPC方法之一。kill是使用信号通信最常用的一个命令之一。

看下面的程序。子进程挂起直到收到SIGUSR1信号。父进程睡眠1s后,向子进程发送SIGUSR1信号,然后回收子进程。

import os
import signal
import time

def main():

    pid = os.fork()
    if pid == 0: # child

        def callback(signum, frame):
            print "{} receive".format(os.getpid()), signum, frame

        signal.signal(signal.SIGUSR1, callback)
        signal.pause()
    else:
        time.sleep(1)
        os.kill(pid, signal.SIGUSR1)
        os.wait()

if __name__ == "__main__":
    main()