kill 进程号 实现上是发了一个信号给指定的进程 。在python里 , 也可以加载事件处理模块,处理来自其它程序发过来的信号, 当然你可以用KILL工具发信号过来 。
ctrl+d也是一个信号,ctrl+c也是一个 。具体信号编码我不记得了 。不过以前我做多进程管理时就是使用这个方法 。好象信号还可以带参数过来 。
你打开python的帮助 。看看signal这个模块 。我把它的例子拿过来 。对你有用不
import signal, os
def handler(signum, frame):
print 'Signal handler called with signal', signum
raise IOError("Couldn't open device!")
# Set the signal handler and a 5-second alarm
signal.signal(signal.SIGALRM, handler)
signal.alarm(5)
# This open() may hang indefinitely
fd = os.open('/dev/ttyS0', os.O_RDWR)
signal.alarm(0)# Disable the alarm
下面是我找到的一些资料 。也许有用 。
信号的概念
信号(signal)--进程之间通讯的方式,是一种软件中断 。一个进程一旦接收到信号就会打断原来的程序执行流程来处理信号 。
几个常用信号:
SIGINT终止进程中断进程(control+c)
SIGTERM终止进程软件终止信号
SIGKILL终止进程杀死进程
SIGALRM 闹钟信号
进程结束信号 SIGTERM和SIGKILL的区别
SIGTERM比较友好 , 进程能捕捉这个信号 , 根据您的需要来关闭程序 。在关闭程序之前 , 您可以结束打开的记录文件和完成正在做的任务 。在某些情况下 , 假如进程正在进行作业而且不能中断 , 那么进程可以忽略这个SIGTERM信号 。
对于SIGKILL信号,进程是不能忽略的 。这是一个 “我不管您在做什么,立刻停止”的信号 。假如您发送SIGKILL信号给进程 , Linux就将进程停止在那里 。
发送信号一般有两种原因:
1(被动式)内核检测到一个系统事件.例如子进程退出会像父进程发送SIGCHLD信号.键盘按下control+c会发送SIGINT信号
2(主动式)通过系统调用kill来向指定进程发送信号
linux操作系统提供的信号
[100003@oss235 myppt]$ kill -l
1) SIGHUP2) SIGINT3) SIGQUIT4) SIGILL
5) SIGTRAP6) SIGABRT7) SIGBUS8) SIGFPE
9) SIGKILL10) SIGUSR111) SIGSEGV12) SIGUSR2
13) SIGPIPE14) SIGALRM15) SIGTERM16) SIGSTKFLT
17) SIGCHLD18) SIGCONT19) SIGSTOP20) SIGTSTP
21) SIGTTIN22) SIGTTOU23) SIGURG24) SIGXCPU
25) SIGXFSZ26) SIGVTALRM27) SIGPROF28) SIGWINCH
29) SIGIO30) SIGPWR31) SIGSYS34) SIGRTMIN
35) SIGRTMIN+136) SIGRTMIN+237) SIGRTMIN+338) SIGRTMIN+4
39) SIGRTMIN+540) SIGRTMIN+641) SIGRTMIN+742) SIGRTMIN+8
43) SIGRTMIN+944) 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-956) SIGRTMAX-857) SIGRTMAX-758) SIGRTMAX-6
59) SIGRTMAX-560) SIGRTMAX-461) SIGRTMAX-362) SIGRTMAX-2
63) SIGRTMAX-164) SIGRTMAX
Python提供的信号
Python 2.4.3 (#1, Jun 11 2009, 14:09:58)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-44)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
import signal
dir(signal)
['NSIG', 'SIGABRT', 'SIGALRM', 'SIGBUS', 'SIGCHLD', 'SIGCLD',
'SIGCONT', 'SIGFPE', 'SIGHUP', 'SIGILL', 'SIGINT', 'SIGIO', 'SIGIOT',
'SIGKILL', 'SIGPIPE', 'SIGPOLL', 'SIGPROF', 'SIGPWR', 'SIGQUIT',
'SIGRTMAX', 'SIGRTMIN', 'SIGSEGV', 'SIGSTOP', 'SIGSYS', 'SIGTERM',
'SIGTRAP', 'SIGTSTP', 'SIGTTIN', 'SIGTTOU', 'SIGURG', 'SIGUSR1',
'SIGUSR2', 'SIGVTALRM', 'SIGWINCH', 'SIGXCPU', 'SIGXFSZ', 'SIG_DFL',
'SIG_IGN', '__doc__', '__name__', 'alarm', 'default_int_handler',
'getsignal', 'pause', 'signal']
操作系统规定了进程收到信号以后的默认行为
推荐阅读
- ie不支持jquery,IE不支持 p标签
- java的数字代码,java数字母
- 收集合成养成类游戏,收集合成养成类游戏有哪些
- 伊春专业sap实施公司,伊春vip专员招聘
- mysql怎么查执行成本 查询mysql执行计划
- mysql安装卡到service,mysql安装卡在第一步
- 电脑开机有什么声音,电脑开机时有很大声音怎么办
- 为什么医院不让拍摄,为什么医院不让录像
- python用def函数 Python用def函数计算50100所有数之和