b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

subprocess_subprocess.popen_subprocess错误(2)

电脑杂谈  发布时间:2017-05-28 07:19:58  来源:网络整理

Popen.kill():杀死子进程。

Popen.stdin:如果在创建Popen对象是,参数stdin被设置为PIPE,Popen.stdin将返回一个文件对象用于策子进程发送指令。否则返回None。

Popen.stdout:如果在创建Popen对象是,参数stdout被设置为PIPE,Popen.stdout将返回一个文件对象用于策子进程发送指令。否则返回None。

Popen.stderr:如果在创建Popen对象是,参数stdout被设置为PIPE,Popen.stdout将返回一个文件对象用于策子进程发送指令。否则返回None。

Popen.pid:获取子进程的进程ID。

Popen.returncode:获取进程的返回值。如果进程还没有结束,返回None。

subprocess.call(*popenargs, **kwargs):运行命令。该函数将一直等待到子进程运行结束,并返回进程的returncode。文章一开始的例子就演示了call函数。如进程不需要进行交互,就可以使用该函数来创建。

subprocess.check_call(*popenargs, **kwargs):与subprocess.call(*popenargs, **kwargs)功能一样,只是如进程返回的returncode不为0的话,将触发CalledProcessError异常。在异常对象中,包括进程的returncode信息。

以上全是抄的

可以这样写

也可以这样

两者的区别是前者无阻塞,会和主程序并行运行,后者必须等待命令执行完毕,如果想要前者编程阻塞可以这样

有时候我们需要程序的返回结果,可以这样做

它会返回一个元组:(stdoutdata, stderrdata)

subprocess还有另一种更简单方法,效果一样,它会返回stdout

前者可以实现更多的交互,如stderr和stdin,但是在前面调用Popen的时候要实现定义Popen(stdin=subprocess.PIPE, stderr=subprocess)

()不为空,则写入subprocess.PIPE,为空,则从subprocess.PIPE读取

实际上是这样的过程

child1.stdout-->subprocess.PIPE

child2.stdin<--subprocess.PIPE

child2.stdout-->subprocess.PIPE

要注意的是,communicate()是Popen对象的一个方法,该方阻塞父进程,直到子进程完成。

subprocess.PIPE实际上为文本流提供一个缓存区。直到communicate()方法从PIPE中读取出PIPE中的文本.要注意的是,communicate()是Popen对象的一个方法,该方阻塞父进程,直到子进程完成。


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-49673-2.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...