带有python问题的多个“gnome-terminal”

时间:2013-05-03 09:20:01

标签: python subprocess gnome-terminal

我正在编写一个运行以下内容的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只出现了几毫秒然后就消失了......

任何建议??

提前谢谢

1 个答案:

答案 0 :(得分:0)

问题可能出在"上。将params列表传递给子进程时,不需要使用它们。在运行之前它将被正确转义。

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

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