码迷,mamicode.com
首页 > 编程语言 > 详细

python 信号通信

时间:2019-05-20 16:55:07      阅读:89      评论:0      收藏:0      [点我收藏+]

标签:tar   art   ssi   import   class   while   sleep   nal   tst   

司机和售票员的故事
1. 创建父子进程,分别表示司机和售票员
2. 当售票员捕捉到 SIGINT信号时 给司机发送 SIGUSR1信号,此时司机打印 “老司机开车了”
    当售票员捕捉到 SIGQUIT时 给司机发送 SIGUSR2信号,此时司机打印“系好安全带,车速有点快”
    当司机捕捉到 SIGTSTP时,发送SIGUSR1给售票员,售票员打印 “到站了,请下车”
3. 到站后 售票员先下车(子进程退出),然后司机下车

 

import multiprocessing as mp 
from signal import * 
import os
from time import sleep

def saler_handler(sig,frame):
    if sig == SIGINT:
        os.kill(os.getppid(),SIGUSR1)
    elif sig == SIGQUIT:
        os.kill(os.getppid(),SIGUSR2)
    elif sig == SIGUSR1:
        print("到站了,请下车")
        os._exit(0)

def driver_handler(sig,frame):
    if sig == SIGUSR1:
        print("老司机,开车了")
    elif sig == SIGUSR2:
        print("车速有点快,系好安全带")
    elif sig == SIGTSTP:
        os.kill(p.pid,SIGUSR1)

#售票员
def saler():
    signal(SIGINT,saler_handler)
    signal(SIGQUIT,saler_handler)
    signal(SIGUSR1,saler_handler)
    signal(SIGTSTP,SIG_IGN)
    while True:
        sleep(2)
        print("Python 带你去远方")

p = mp.Process(target = saler)
p.start()

signal(SIGUSR1,driver_handler)
signal(SIGUSR2,driver_handler)
signal(SIGTSTP,driver_handler)
signal(SIGINT,SIG_IGN)
signal(SIGQUIT,SIG_IGN)
p.join()

 

python 信号通信

标签:tar   art   ssi   import   class   while   sleep   nal   tst   

原文地址:https://www.cnblogs.com/hooo-1102/p/10894888.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!