在新终端中运行辅助脚本

2023-11-30

运行辅助 python 脚本时:

  • 是否可以运行subprocess.Popen, or subprocess.call甚至execfile在新航站楼? (就像在与运行脚本的当前终端不同的终端中)。
  • 或者,如果在运行我的程序(主程序)之前,我首先打开两个终端,然后我可以将辅助脚本指向第二个终端吗? (因此以某种方式获取打开终端的 ID,然后使用其中的特定终端来执行子进程)。

一个例子,要运行两个子进程,first.py应该首先调用,然后才调用第二个,second.py。因为这两个脚本first.py and second.py是相互依赖的(如first.py进入等待模式,直到second.py运行,然后first.py恢复,我不知道如何在子进程方面使它们之间的通信有效。)

import subprocess

command = ["python", "first.py"]
command2 = ["python", "second.py"]
n = 5
for i in range(n):
    p = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
    p2 = subprocess.Popen(command2, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
    while True:
        output = p.stdout.readline().strip()
        print output
        if output == 'stop':
            print 'success'
            p.terminate()
            p2.terminate()
            break

框架(Ubuntu、Python 2.7)


我猜你想要类似的东西

subprocess.call(['xterm','-e','python',script])

老好xterm几乎没有多余的装饰;在 Freedesktop 系统上,也许可以运行xdg-terminal反而。在 Debian 上,尝试x-terminal-emulator.

然而,在大多数情况下,让您的程序需要 X11 是一个错误。更好的解决方案是运行子进程并将输出输出到日志文件(或套接字或其他任何文件),然后单独运行tail -f在这些文件上(在不同的终端中,或从不同的服务器上ssh,或输出到支持的记录器rsyslog,或或或...),这使您的程序保持简单和模块化,不受“方便”依赖性的影响。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在新终端中运行辅助脚本 的相关文章

随机推荐