当前位置: 首页 > news >正文

事业单位门户网站建设的建议php小程序开发完整教程

事业单位门户网站建设的建议,php小程序开发完整教程,如何做免费的公司网站,个人养老金怎么缴纳在了解了Linux的信号基础之后,Python标准库中的signal包就很容易学习和理解。signal包负责在Python程序内部处理信号,典型的操作包括预设信号处理函数,暂停并等待信号,以及定时发出SIGALRM等。要注意,signal包主要是针…

在了解了Linux的信号基础之后,Python标准库中的signal包就很容易学习和理解。signal包负责在Python程序内部处理信号,典型的操作包括预设信号处理函数,暂停并等待信号,以及定时发出SIGALRM等。要注意,signal包主要是针对UNIX平台(比如Linux, MAC OS),而Windows内核中由于对信号机制的支持不充分,所以在Windows上的Python不能发挥信号系统的功能。

定义信号名
signal包定义了各个信号名及其对应的整数,比如

import signal
print signal.SIGALRM
print signal.SIGCONT

Python所用的信号名和Linux一致。你可以通过

$man 7 signal

查询

预设信号处理函数
signal包的核心是使用signal.signal()函数来预设(register)信号处理函数,如下所示:

singnal.signal(signalnum, handler)

signalnum为某个信号,handler为该信号的处理函数。我们在信号基础里提到,进程可以无视信号,可以采取默认操作,还可以自定义操作。当handler为signal.SIG_IGN时,信号被无视(ignore)。当handler为singal.SIG_DFL,进程采取默认操作(default)。当handler为一个函数名时,进程采取函数中定义的操作。

import signal
# Define signal handler function
def myHandler(signum, frame):print('I received: ', signum)# register signal.SIGTSTP's handler 
signal.signal(signal.SIGTSTP, myHandler)
signal.pause()
print('End of Signal Demo')

在主程序中,我们首先使用signal.signal()函数来预设信号处理函数。然后我们执行signal.pause()来让该进程暂停以等待信号,以等待信号。当信号SIGUSR1被传递给该进程时,进程从暂停中恢复,并根据预设,执行SIGTSTP的信号处理函数myHandler()。myHandler的两个参数一个用来识别信号(signum),另一个用来获得信号发生时,进程栈的状况(stack frame)。这两个参数都是由signal.singnal()函数来传递的。

上面的程序可以保存在一个文件中(比如test.py)。我们使用如下方法运行:

$python test.py

以便让进程运行。当程序运行到signal.pause()的时候,进程暂停并等待信号。此时,通过按下CTRL+Z向该进程发送SIGTSTP信号。我们可以看到,进程执行了myHandle()函数, 随后返回主程序,继续执行。(当然,也可以用$ps查询process ID, 再使用$kill来发出信号。)

(进程并不一定要使用signal.pause()暂停以等待信号,它也可以在进行工作中接受信号,比如将上面的signal.pause()改为一个需要长时间工作的循环。)

我们可以根据自己的需要更改myHandler()中的操作,以针对不同的信号实现个性化的处理。

定时发出SIGALRM信号
一个有用的函数是signal.alarm(),它被用于在一定时间之后,向进程自身发送SIGALRM信号:
 

import signal
# Define signal handler function
def myHandler(signum, frame):print("Now, it's the time")exit()# register signal.SIGALRM's handler 
signal.signal(signal.SIGALRM, myHandler)
signal.alarm(5)
while True:print('not yet')

我们这里用了一个无限循环以便让进程持续运行。在signal.alarm()执行5秒之后,进程将向自己发出SIGALRM信号,随后,信号处理函数myHandler开始执行。

发送信号
signal包的核心是设置信号处理函数。除了signal.alarm()向自身发送信号之外,并没有其他发送信号的功能。但在os包中,有类似于linux的kill命令的函数,分别为

os.kill(pid, sid)

os.killpg(pgid, sid)

分别向进程和进程组(见Linux进程关系)发送信号。sid为信号所对应的整数或者singal.SIG*。

实际上signal, pause,kill和alarm都是Linux应用编程中常见的C库函数,在这里,我们只不过是用Python语言来实现了一下。实际上,Python 的解释器是使用C语言来编写的,所以有此相似性也并不意外。此外,在Python 3.4中,signal包被增强,信号阻塞等功能被加入到该包中。我们暂时不深入到该包中。

http://www.15wanjia.com/news/172258.html

相关文章:

  • 黄页网站怎么查股票海选公司用什么网站
  • 打码网站做的比较好的是哪些重庆网站关键词优化推广
  • 哪个网站可以做头像的抚顺做网站的公司
  • 网站做排名2015新年.net电影网站开发
  • 云南做网站广州网页seo排名
  • 网站开发的整个流程一般通过什么渠道了解防灾减灾知识
  • google提交网站入口百度注册入口
  • 信用网站建设的必要性网站建设需要会什么软件
  • 设计类招聘网站微信商城和网站建设
  • 怎么建商业网站床上用品网站源码
  • 广东佛山如何制作网站公司销售管理系统设计
  • 金融企业网站php源码建筑工程网站搭建
  • 免费个人网站申请外贸订单一般在哪个平台接?
  • 480元做网站个人网站怎么做代码
  • 深圳市网站建设公司排名长沙网站优化诊断
  • 外贸网站推广中山黄页号码是什么意思啊?
  • 怎么做才能设计出好的网站网站建设是啥
  • 2008iis7怎么搭建网站工业网站模板
  • 湖北省建设工程质量安全监督网站宾馆管理系统
  • 网站开发九大优势愚人网站建设
  • onethink 网站百度竞价排名查询
  • 北京做网站哪家公司好otc场外交易网站开发
  • 免费旅游网站源码下载淘宝网站建设不允许
  • c#网站开发案例大全hao123文件在哪里
  • 做视频在哪个网站找素材深圳seo优化排名公司
  • 微信怎么建设网站企业为什么要增资
  • 建站之星建出来的网站如何上传农产品网络营销方案
  • 北京网站运营优化公司建设银行官网电话
  • 北京市保障房建设官方网站本地佛山企业网站建设
  • 江西通威公路建设集团有限公司网站护肤品网站模板