无法使用python子进程

时间:2017-11-29 06:17:01

标签: python ubuntu subprocess gnome-terminal

用例: 我需要在两个独立的gnome终端上运行一个命令。

命令是'appium -p port',其中port是包含两个端口号的列表。 所以最后的命令就像

appium -p 4723

appium -p 4750

这是我的代码

import os
import signal
import subprocess

def open_ubuntu_appium(*args):
        for item in args:
            for subitem in item:
                subitem=str(subitem)
                command='appium -p'
                command ='"'+command+' '+subitem+';read -n1" '
                print command
                #"appium -p 4723;read -n1"
                #"appium -p 4750;read -n1"
                subitem = Popen(['gnome-terminal','--disable-factory','-x','bash','-c',command],preexec_fn=os.setpgrp)

port=[4723,4750]
appium=open_ubuntu_appium(port)

输出: 没有调用gnome终端

预期: 应该使用命令

调用两个单独的Gnome终端

appium -p 4723

appium -p 4750

我在这里做错了什么,有没有其他办法可以实现这一目标。 我还需要在启动后杀死被调用的终端

1 个答案:

答案 0 :(得分:0)

我仍然无法解决上述问题,但我找到了在ubuntu中打开多个终端的替代方案

    from subprocess import Popen
    def open_appium(*args):
        command='appium -p'
        linux_terminal=['gnome-terminal']
            for item in args:
                for port in item:
                    linux_terminal.extend((['--tab','--disable-factory','-e', '''
                    bash -c '
                    echo "%(command)s %(port)s"
                    %(command)s "%(port)s"
                    read
                    '    
                    ''' % locals()]))
            linux_window=Popen(terminal,preexec_fn=os.setpgrp)

port=[4723,4730]
ab=open_appium(port)

输出: 使用“appium -p”+ port命令

调用两个单独的gnome终端