我正在编写一个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终端只出现了几毫秒,然后就消失了……
有什么建议吗?
提前谢谢你
发布于 2013-05-03 17:48:49
问题可能与"有关。在将参数列表传递给子进程时,不需要使用这些参数。它将在运行前被正确转义。
窗口正在关闭,因为生成的命令可能格式不正确,因此会生成错误并立即退出。
因此,如果您有要运行的文本命令,则可以使用shlex.split生成适当的列表,并将其传递给子进程。通常,您不必担心引号和转义字符。因此,要将一个空格作为参数传递,只需编写一个空格。
https://stackoverflow.com/questions/16355485
复制相似问题