情况就是这样:
我在Linux中运行2个不同shell的python中有2个脚本: 1° - python3 server.py 2° - python3 roomcontrol.py
我需要用户可以从server.py重新启动roomcontrol.py。 我试过子进程:
from subprocess import call
dir = os.path.dirname(os.path.realpath(__file__)) + "/roomcontrol.py"
call(["python3",dir])
这些说明只是在“server.py”的shell中启动了一个新的“roomcontrol.py”,我需要在他的shell中重启roomcontrol.py。或者关闭他的壳并打开一个新的。
编辑:
我也尝试过:
import subprocess
dir = os.path.dirname(os.path.realpath(__file__)) + "/roomcontrol.py"
subprocess.Popen([dir], stdout=subprocess.PIPE, shell=True)
它不起作用。 它在server.py的同一个shell中编写了很多东西,我的光标变成了一个十字架,如果我点击某个地方就像以前一样。它写的一个小例子:
import: unable to grab mouse `': Resource temporarily unavailable @ error/xwindow.c/XSelectWindow/9199.
import: unable to grab mouse `': Resource temporarily unavailable @ error/xwindow.c/XSelectWindow/9199.
.
.
.
from: can't read /var/mail/xml.dom
/home/stark/Desktop/TrackingOk/Release/roomcontrol.py: 9: /home/stark/Desktop/Tr: not foundlease/roomcontrol.py:
/home/stark/Desktop/TrackingOk/Release/roomcontrol.py: 10: /home/stark/Desktop/T: not foundelease/roomcontrol.py: try:
答案 0 :(得分:0)
创建一个新的.sh文件(" restart.sh"例如):
#!/bin/bash
kill $(pgrep -f 'python3 roomcontrol.py')
python3 roomcontrol.py &
然后致电
os.system('./restart.sh')
在你的" server.py"脚本。
PS:您必须通过运行以下命令使.sh文件可执行:
chmod +x restart.sh
编辑:我不确定如何从不同的shell启动进程,但您可以启动" roomcontrol.py"在另一个终端窗口中使用以下(bash)命令:
gnome-terminal -x sh -c 'python3 roomcontrol.py'
但是你必须更换" restart.sh"由
#!/bin/bash
kill -9 $(pgrep -f 'sh -c python3 roomcontrol.py')
gnome-terminal -x sh -c 'python3 roomcontrol.py'