0

我正在编写一个运行以下命令的 python 程序:

import subprocess
import time


def fun1():
    terminal1 = ['gnome-terminal']
    terminal1.extend(['-x', 'sh', '-c', '"roscore"'])
    pid = subprocess.Popen(terminal1, stdout=subprocess.PIPE)
    time.sleep(3)
    print "success1"
    fun2()





def fun2():
    terminal2 = ['gnome-terminal']
    terminal2.extend(['-x', 'sh', '-c', '"rosrun rosserial_python serial_node.py /dev/ttyACM0"' ])

    pid2 = subprocess.Popen(terminal2, stdout=subprocess.PIPE)
    print "success2"

fun1()

fun1 工作正常,我等待 3 秒,因为它会持续一段时间,直到一切都完成,这样 fun2 才能工作(我不能同时启动两者,fun2 必须等待 fun1,这在 fun2 之前永远不会结束)

运行 fun2 时出现问题,我不知道错误在哪里,是与 fun1 中的“相同”代码,但 gnome-terminal 仅出现几毫秒然后消失...

有什么建议吗??

先感谢您

4

1 回答 1

0

问题可能与". 将参数列表传递给子进程时,您不需要使用这些。它将在运行之前正确转义。

窗口正在关闭,因为生成的命令可能格式错误,因此会生成错误并立即退出。

因此,如果您有要运行的文字命令,则可以使用shlex.split生成适当的列表以传递给子进程。通常,您不必担心引号和转义字符。因此,要将空格作为参数传递,只需写一个空格即可。

于 2013-05-03T09:48:49.387 回答