在Windows中终止子进程,访问被拒绝。

8

-

import time
import subprocess
from os.path import expanduser

chrome_path = expanduser('~\Local Settings\Application Data\Google\Chrome\Application\chrome.exe')

proc = subprocess.Popen(chrome_path)
time.sleep(4)
proc.terminate()

输出:WindowsError: [错误 5] 拒绝访问

我该如何结束 Chrome 进程?

Python 2.6 在 Windows XP 上。


1
我无法复制您的问题。我正在使用Windows 7上的Python 2.6.6和6.0.472.63,但进程可以正常终止。 - jsalonen
猜想这只是一个XP的问题。我已经在问题中添加了版本信息。 - Jesse Aldridge
3个回答

2

我不了解Windows,但是在Linux上我注意到Google Chrome以一种很少有程序这样做的方式“保护”自己免受操作系统控制信号的影响:

$ ps -lp 2345
F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
4 S  1000  2345     1  0  80   0 - 17699 skb_re ?        00:00:00 chrome
$ kill -TERM 2345
$ kill -HUP 2345
$ kill -SEGV 2345
$ ps -lp 2345
F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
4 S  1000  2345     1  0  80   0 - 17699 skb_re ?        00:00:00 chrome

我怀疑这可能是您遇到麻烦的根本原因。顺便说一句,我从进程2345中发布了此注释。


0

如果你使用 TASKKILL /F /PID [进程 ID 号] 会发生什么?试一试吧。通过 import OS 启动它。


我不确定我理解了... 'TASKKILL' 不被识别为内部或外部命令、可操作的程序或批处理文件。 - Jesse Aldridge
啊,显然taskkill只有XP Pro才有。我在运行Home版。不过"tskill <pid>"是有效的。 - Jesse Aldridge

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接