首页 > 解决方案 > 如何让子进程显示正在机器上执行的命令

问题描述

我可以使用以下函数在机器上执行命令,但我看不到 bash 提示符或发出的命令。

def test12():
    global cmd_list, cmd_string
    sub_proc = subprocess.Popen(cmd_list, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()

def test13():
    global cmd_list, cmd_string
    sub_proc = subprocess.Popen(cmd_string, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()

有没有办法路由/查看执行了什么命令以及 shell 提示符是什么?我已经让它将命令执行后显示的所有内容发送回主脚本。

标签: python-3.xsubprocess

解决方案


使用这些技术中的任何一种都不会获得 shell 提示符。在第一种情况下,不运行任何 shell。它可以是用于 unix 系统的 fork 和 exec,也可以是用于 Windows 的 ExecuteProcess。在第二种情况下,调用 shell 来执行一个命令。例如,在 linux 上,命令是SHELL环境变量中的任何内容。在我的系统上它运行/bin/sh -c testprogram,它运行程序而无需通过 shell 提示符。

如果您想查看该命令,请在运行程序之前将其打印出来。


推荐阅读