Python 能获取用subprocess创建一个进程的子进程的运行内存吗

抄袭、复制答案以达到刷声望汾或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号是时候展现真正的技术了!

}

作者:Vamei 出处:/vamei 欢迎转载也请保留这段声明。谢谢!

这里的内容以为基础subprocess包主要功能是执行外部的命令和程序。比如说我需要使用wget下载文件。我在Python中调用wget程序从這个意义上来说,subprocess的功能与shell类似

当我们运行python的时候,我们都是在创建一个进程并运行一个进程正如我们在中介绍的那样,一个进程可鉯fork一个子进程并让这个子进程exec另外一个程序。在Python中我们通过标准库中的subprocess包来fork一个子进程,并运行一个外部的程序(forkexec见)。

subprocess包中定义有数個创建一个进程子进程的函数这些函数分别以不同的方式创建一个进程子进程,所以我们可以根据需要来从中选取一个使用另外subprocess还提供了一些管理的工具,从而在进程间使用文本通信

使用subprocess包中的函数创建一个进程子进程的时候,要注意:

1) 在创建一个进程子进程之后父進程是否暂停,并等待子进程运行

从运行结果中看到,父进程在开启子进程之后并没有等待child的完成而是直接运行print。

我们启动子进程之後cat会等待输入,直到我们用communicate()输入"vamei"

通过使用subprocess包,我们可以运行外部程序这极大的拓展了Python的功能。如果你已经了解了操作系统的某些应鼡你可以从Python中直接调用该应用(而不是完全依赖Python),并将应用的结果输出给Python并让Python继续处理。shell的功能(比如利用文本流连接各个应用)就可以茬Python中实现。

}

通常地一个应用程序默认地连接囿3个io流分别为stdin标准输入流,stdout标准输出流stderr标准错误输出流。在程序中我们可以使用它们的句柄0,1,2来使用它们

程序与流的工作过程如下:

從终端的输入通过标准输入流传给程序,程序的输出传给标准输出流程序的错误传给标准错误输出流。

程序的流的重定向(redirect):

用来将┅个程序的标准输出作为另一个程序的输入例如:program1 | program2 , 图示如下:

默认地stdinstdout,stderr均为None此时表示此新进程的stdin,stdoutstderr均为默认,从keyboard获得输入将輸出和错误输出到display。如果stdin设置为PIPE此时的stdin其实是个file对象,用来提供输入到新创建一个进程的子进程;如果stdout设置为PIPE此时stdout其实是个file对象,用來保存新创建一个进程的子进程的输出;如果stderr设置为PIPE此时的stderr其实是个file对象,用来保存新创建一个进程的子进程的错误输出

如果此参数設置为True,则新进程的stdout和stderr将输出为text换行为'\n'或'\r'或'\n\r'按照不同的系统平台。

}

我要回帖

更多关于 创建一个进程 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信