pexpect.spawn
对象在调用expect
(或interact
,send
等)之前是否处于非活动状态,或者被调用的进程是否立即启动?例如:
import pexpect
process = pexpect.spawn("echo HELLO")
print ("Process created? Or run?")
process.expect("HELLO")
当print
语句出现时,pexpect
已经在封面下运行了echo命令,只是暂时让它返回,直到expect
调用处理完毕?或者在第一次调用echo
或类似内容之前没有发生任何事情(expect
尚未运行)?
干杯
答案 0 :(得分:3)
传递命令时,pexpect.spawn()
会立即调用该命令。您的示例中的echo命令已经运行。
这隐含在spawn
constructor documentation:
这是构造函数。命令参数可以是字符串 包括命令和命令的任何参数。例如::
child = pexpect.spawn ('/usr/bin/ftp') child = pexpect.spawn ('/usr/bin/ssh user@example.com') child = pexpect.spawn ('ls -latr /tmp')
您也可以使用so ::
之类的参数列表构建它child = pexpect.spawn ('/usr/bin/ftp', []) child = pexpect.spawn ('/usr/bin/ssh', ['user@example.com']) child = pexpect.spawn ('ls', ['-latr', '/tmp'])
在此之后,将创建子应用程序并准备好 与...交谈。
我通过查看source code确认了这一点;构造函数调用_spawn()
,其记录如下:
这将在子进程中启动给定命令。这样做可以做到 fork / exec类型的东西为pty。这由
__init__
调用。如果args 是空的然后命令将被解析(在空格上拆分)和args将是 设置为解析参数。