子流程.popenpid变更

2024-04-16 12:37:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个我用的脚本子流程.Popen启动外部程序过程.杀死()一开始就杀了它。每次脚本试图终止它时,我都会遇到Windows错误[5](拒绝访问)。我已经意识到程序的pid实际上是在打开后发生变化的。在Python中,有没有一种方法可以监视更改的进程,或者只检索新的pid?在

代码如下:

import subprocess
import time

proc  =  subprocess.Popen(Path/to/WinSCP.exe)
time.sleep(2)
proc.kill()

错误:

^{pr2}$

Tags: 方法import程序脚本time进程过程windows
1条回答
网友
1楼 · 发布于 2024-04-16 12:37:07

这就是我最后要做的

import tempfile
import subprocess
import time

# Create a temp file to receive output
tf      =  tempfile.NamedTemporaryFile(delete=False)
output  =  open(tf.name, "w")

# Open and close WinSCP
subprocess.Popen(Path/To/WinSCP.exe)
time.sleep(2)
subprocess.call("TASKKILL /IM WinSCP.exe", stdout=output)
tf.close()

我以前遇到的问题是无法隐藏命令的输出。这也许不是实现这一目标的最漂亮的方法,但它确实有效。在

另外请注意,我使用的是Windows 8。我知道命令本身在不同版本的Windows中可能略有不同。在

相关问题 更多 >