当命令运行时,有什么方法可以在 Python 中显示 shell 命令的输出?
我有以下代码将命令发送到特定的shell(在本例中为/bin/tcsh
):
import subprocess
import select
cmd = subprocess.Popen(['/bin/tcsh'], stdin=subprocess.PIPE, stdout=subprocess.PIPE)
poll = select.poll()
poll.register(cmd.stdout.fileno(),select.POLLIN)
# The list "commands" holds a list of shell commands
for command in commands:
cmd.stdin.write(command)
# Must include this to ensure data is passed to child process
cmd.stdin.flush()
ready = poll.poll()
if ready:
result = cmd.stdout.readline()
print result
另外,我从这个线程得到了上面的代码,但我不确定我是否理解轮询机制是如何工作的。
- 上面到底注册了什么?
ready
如果我不传递任何变量,为什么我需要timeout
变量poll.poll()
?