手抄报 安全手抄报 手抄报内容 手抄报图片 英语手抄报 清明节手抄报 节约用水手抄报

python学习_关闭子进程及子进程输出到文件

时间:2024-10-13 18:39:11

本文讲解在使用kill pid命令关闭python脚本时,如何优雅地关闭子进程;以及如何将子进程的输出重定向到文件中

工具/原料

python 2.7

centos 7

子进程

1、子进程类主要包含两个函数,一个是启动子进程,一个是关闭子进程

2、clas衡痕贤伎ssubprocess.Popen(args,bufsize=0,executable=None,stdin=None,stdout=None,stderr=None,preexec_fn=None,close_fds=False,shell=False,cwd=None,env=None,universal_newlines=False,startupinfo=None,creationflags=0)启动一个子进程,主要用到的参数就是args下面主要讲解下参数args,可以是一个字符串,也可以是一个包含程序参数的列表比如需要打开gedit程序,可以输入subprocess.Popen("/usr/bin/gedit")如果需要用gedit打开1.txt文本,如果subprocess.Popen("/usr/bin/gedit 1.txt")就会报错可以输入subprocess.Popen(["/usr/bin/gedit", "1.txt"]) 或者subprocess.Popen("/usr/bin/gedit 1.txt", shell=True)Popen.wait() 等待子进程退出

3、启动子进程函数,运行一个子进程,然后等待子进程退出

python学习_关闭子进程及子进程输出到文件

4、Popen.kill() 杀掉子进程Popen.returncode子程序的返回值,由poll()或者wait()设置,间接地也由communicate()设置。如果为None,表示子进程还没终止。如果为负数-N的话,表示子进程被N号信号终止。

5、关闭子进程函数,当子进程未退出时,杀掉子进程

python学习_关闭子进程及子进程输出到文件

信号处理

1、在程序入口,添加signal.SIGTERM信号,当捕获到信号后,关闭子进程

python学习_关闭子进程及子进程输出到文件

运行效果

1、目录结构如下

python学习_关闭子进程及子进程输出到文件

2、在命令行运行python main.py将在新窗口打开1.txt文件,命令行也处于等待的状态

python学习_关闭子进程及子进程输出到文件

3、在另一个命令行窗口查找main.py运行的pid,然后调用kill pid杀掉主程序。可以看到之前启动的子进程也一并关闭了

python学习_关闭子进程及子进程输出到文件

子进程输出到文件

1、subprocess.Popen在启动子旅邯佤践进程时,还有许多参数stdin stdout和stderr,分别表示子程序的标准脶巴躔炒输入、标准输出和标准错误。可选的值有PIPE或者一个有效的文件描述符(其实是个正整数)或者一个文件对象,还有None。这里以stdout举例默认是输出到屏幕,也可以指定到文件

2、修改main.py中,mysubpro.Run的参数为mysubpro.Run("ls")然后运行,可以看到,在命令行中输出了ls命令的结果

python学习_关闭子进程及子进程输出到文件
python学习_关闭子进程及子进程输出到文件

3、修改subproces.Popen函数,增加stdout的输出到文件中可以看到命令行中没有了ls的结果,在文件中看到了ls的结果

python学习_关闭子进程及子进程输出到文件
python学习_关闭子进程及子进程输出到文件
© 手抄报圈