重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
ubuntu下,也就是linux下,通常会用kill -事件编号实现。 你查一下LINUX下的事件就明白了。
嘉善网站建设公司创新互联,嘉善网站设计制作,有大型网站制作公司丰富经验。已为嘉善1000+提供企业网站建设服务。企业网站搭建\成都外贸网站建设公司要多少钱,请找那个售后服务好的嘉善做网站的公司定做!
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) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL
5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE
9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2
13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGSTKFLT
17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU
25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH
29) SIGIO 30) SIGPWR 31) SIGSYS 34) SIGRTMIN
35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3 38) SIGRTMIN+4
39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) 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-9 56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6
59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) 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']
操作系统规定了进程收到信号以后的默认行为
但是,我们可以通过绑定信号处理函数来修改进程收到信号以后的行为
有两个信号是不可更改的SIGTOP和SIGKILL
绑定信号处理函数
import os
import signal
from time import sleep
def onsignal_term(a,b):
print '收到SIGTERM信号'
#这里是绑定信号处理函数,将SIGTERM绑定在函数onsignal_term上面
signal.signal(signal.SIGTERM,onsignal_term)
def onsignal_usr1(a,b):
print '收到SIGUSR1信号'
#这里是绑定信号处理函数,将SIGUSR1绑定在函数onsignal_term上面
signal.signal(signal.SIGUSR1,onsignal_usr1)
while 1:
print '我的进程id是',os.getpid()
sleep(10)
运行该程序。然后通过另外一个进程来发送信号。
发送信号
发送信号的代码如下:
import os
import signal
#发送信号,16175是前面那个绑定信号处理函数的pid,需要自行修改
os.kill(16175,signal.SIGTERM)
#发送信号,16175是前面那个绑定信号处理函数的pid,需要自行修改
os.kill(16175,signal.SIGUSR1)
很简单的问题,其实只要好好看完谭老的书,这些问题就不在是问题了。加油吧。
1.这两个是对函数的声明,double factorial(int) double 是函数的返回值类型, int是函数参数的类型,这里只有一个参数。另外一个也是这个意思。不过Term函数的参数是有两个参数,double类型和int类型。因为程序中有对自定义函数的引用,所以首先要进行声明,程序的最后则是对这两个函数的定义。
2.l是long的意思,明白了吧,就是长类型,如long int,就是长整型。这里lf就是双精度。
3.fabs是编译器提供的函数,求绝对值。就是求dTemp的绝对值然后与dEps进行比较。
4.这个我已经说了,程序的最后是对所自定义的函数进行的定义。也就是对你自己定义的函数的设计。
通过你提的问题可以看出,对c的学习还是很浅。书本的基本知识还是要抓经的,毕竟没有基本功,想学好c语言是不可能的。
建议你先看完谭浩强的c语言教程。
加油!!
1、在python中,Python 用反斜线 (“\”) 作为续行符(换行符),这里以python3.5为例。首先运行终端或者cmd命令行(windows下),执行python3.5的命令。
2、然后输入如下图所示的内容。本身就是输出hello world!的字符串。但是这里使用了"\"进行换行。
3、这种换行方法也可以在编辑器中进行,这里以vim为例,输入与上图类似的代码,保存为t.py脚本文件。
4、在bash中执行如下命令,同样可以执行。
5、如果不希望使用命令,则可以给python脚本加上权限。首先要在脚本文件中指明脚本解释器为python。在上面的t.py脚本文件中加入下面一行内容:#!/usr/bin/env python。
6、然后执行如下命令给t.py添加可执行权限,chmod 755 t.py。
执行如下命令执行python脚本,./t.py,同样可以执行。