匿名用户

1级

2013-10-31 回答

ubuntu下,也就是linux下,通常会用kill -事件编号实现。 你查一下LINUX下的事件就明白了。

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)

ubuntu如何调出python_ubuntu|linux下 如何用python 模拟按键相关推荐

  1. ubuntu终端安装python_Ubuntu linux下安装python3(手动安装)

    之前一直用anaconda,但是anaconda比较大,于是尝试用源代码编译安装了一下,发现还真不容易. 在Ubuntu下手动编译安装python3,遇到不少坑,具体过程如下: 1.下载python源 ...

  2. linux脚本输出缓存上限,关于 Linux 下后台执行 Python 脚本的缓冲问题

    [问题简述] 在 Linux 下后台执行 Python 脚本,重定向到日志文件,日志文件迟迟没有内容. [方案一](测试有效)nohup python3 -u t.py &> log.l ...

  3. linux下进程调度算法实验,Linux下进程调度算法的模拟实现.doc

    Linux下进程调度算法的模拟实现 枣 庄 学 院 信息科学与工程学院课程设计任务书 题目: Linux下进程调度算法的模拟实现 学 生1: 学 生2: 学 生3: 专 业: 计算机应用技术 课 程: ...

  4. linux ubuntu 关闭防火墙命令,Linux下开启/关闭防火墙命令

    iptables用于过滤数据包,属于网络层防火墙. firewall能够允许哪些服务可用,那些端口可用.... 属于更高一层的防火墙. firewall的底层是使用iptables进行数据过滤,建立在 ...

  5. linux出站入站端口维护,linux下如何用iptables开放指定端口_网站服务器运行维护,linux,iptables,端口...

    win10系统老是弹出垃圾广告怎么办_网站服务器运行维护 win10系统老是弹出垃圾广告的解决方法是:1.打开控制面板,进入Internet选项:2.在打开的Internet属性窗口中,切换到[隐私] ...

  6. linux下 如何用信号signal 终止或者暂停子线程,linux下实现线程暂停

    记得在windows下有一个SuspendThread使线程挂起的函数,却发现linux下没有类似的函数,于是想自己写个.. 刚开始就想到用信号(没办法,正在看auep,只能想到这个) test1: ...

  7. linux下如何用gcc编译器生成lst文件?

    工作中又用到lst文件去定位一些问题,因此突然又对这个文件产生了兴趣(因为之前几次也查过百度,苦于一直没找到直接的方法),这次就是先请教了工作的前辈,然后又整合了各方资料,总算是生成了lst文件了,因 ...

  8. linux python qt 安装目录,Linux 下QT调用Python库文件 以及Linux 安装Python3.8开发环境 问题...

    最近想运用linux系统下Qt来实现c++ 与python的混合编程,linux系统会自带python2.7版本或者python3.5版本(深度linux). Qt调用python文件需要在pro文件 ...

  9. linux下被遗忘的gpio_keys按键驱动

    我们新项目硬件设计上使用gpio口做按键,所以我就需要搞定这个驱动,本来想自己写一个gpio口的按键驱动,然后看了下内核下面的代码,已经有现成的了.Linux内核下游很多很多的现成驱动,只要你想得到的 ...

最新文章

  1. 技术05期:五分钟教你读懂卷积神经网络【CNN】
  2. Windows基本路由配置(cmd/route)
  3. 每天学一点儿shell:vi和vim命令使用
  4. 以主干开发作为持续交付的基础
  5. 数据结构之基于顺序表的插入排序
  6. PPT幻灯片转换成word的软件
  7. 中国为什么不发展民用计算机,为什么大多数人都错估了计算机与AI的发展?
  8. .NET Windows服务开发流程
  9. linux命令笔记之ls
  10. 微信小程序开发视频分享
  11. 联想IBM笔记本驱动
  12. 计算机教案制作电子表格,制作电子表格教案
  13. 当我在做技术管理时,我在做什么?
  14. Java正则匹配字母,数字,特殊字符
  15. windows_server_2008_远程桌面(授权、普通用户登录多用户登录
  16. 【香水】区分迪奥小姐Miss Dior中样式相似的几款香水
  17. Spark RDD 持久化
  18. 告诉你SuperMap iDesktop软件怎么一步步制作地图的方法
  19. mysql报1142错误
  20. shell小工具-检查日志目录下log文件中err信息

热门文章

  1. php加载lrc,javascript - 【求助】php如何获取虾米网的LRC地址?
  2. c语言变量名s_i使其随i变化,动态规划I(含细c语言代码).ppt
  3. Jdk8之Lambda表达式
  4. c16语言延时函数delay,《linux设备驱动开发详解》笔记——10中断与时钟
  5. K8S 部署rabbitmq集群
  6. 计算机应用第7章在线测试,《计算机应用基础》第07章在线测试
  7. 深入了解hibernate之PO,VO,load,get
  8. 基于Python+Django的在线习题考试测试管理系统
  9. ubuntu18.04 中个性化配置vim方法
  10. JAVA编码 —— 字符串关键字内容替换