windows平台下如何用Python殺程序

2021-06-07 10:18:39 字數 2604 閱讀 5992

參考**:

python語言: windows平台下如何用python殺程序

#from :

# "這段**來自於乙個很簡單的場景:

# 在python中調乙個程式。給這個程式設定乙個timeout

# 假如一段時間程式還沒有返回,就殺掉這個這個新開的程序。

# 本來以為我肯定不是第乙個遇到這個問題的人,

# 但是網上搜了好久都沒找到完整的辦法,自己搞了乙個。"

import ctypes

import sys

class processentry32(ctypes.structure):

_fields_ = [("dwsize", ctypes.c_ulong),

("cntusage", ctypes.c_ulong),

("th32processid", ctypes.c_ulong),

("th32defaultheapid", ctypes.c_ulong),

("th32moduleid", ctypes.c_ulong),

("cntthreads", ctypes.c_ulong),

("th32parentprocessid", ctypes.c_ulong),

("pcpriclassbase", ctypes.c_ulong),

("dwflags", ctypes.c_ulong),

("szexefile", ctypes.c_char * 260)]

def getproclist():

createtoolhelp32snapshot = ctypes.windll.kernel32.createtoolhelp32snapshot

process32first = ctypes.windll.kernel32.process32first

process32next = ctypes.windll.kernel32.process32next

closehandle = ctypes.windll.kernel32.closehandle

pe32 = processentry32()

pe32.dwsize = ctypes.sizeof(processentry32)

if process32first(hprocesssnap,ctypes.byref(pe32)) == false:

print >> sys.stderr, "failed getting first process."

return

while true:

yield pe32

if process32next(hprocesssnap,ctypes.byref(pe32)) == false:

break

closehandle(hprocesssnap)

def getchildpid(pid):

proclist = getproclist()

for proc in proclist:

if proc.th32parentprocessid == pid:

yield proc.th32processid

def killpid(pid):

childlist = getchildpid(pid)

for childpid in childlist:

killpid(childpid)

handle = ctypes.windll.kernel32.openprocess(1, false, pid)

ctypes.windll.kernel32.terminateprocess(handle,0)

if __name__ =='__main__':

args = sys.argv

if len(args) >1 :

pid = int(args[1])

killpid(pid)

else:

proclist = getproclist()

for proc in proclist:

print proc.szexefile+' '+str(proc.th32parentprocessid) + ' '+str(proc.th32processid)

#----------------------

## usage demo

##----------------------

import subprocess

import time

#import winproc

timeout = 2

process = subprocess.popen("cmd /k ping localhost -t",shell = true)

start = int(time.time())

while process.poll()==none:

now = int(time.time())

if int (now - start) >timeout:

pid = process.pid

break

winproc.killpid(pid)

print "end"

Windows平台下安裝NLTK

在網上找了一圈,沒找到幾個靠譜的安裝流程,在上找到各平台下安裝流程 windows平台 以下操作假定你的機器上還沒有安裝python,如果你已經安裝python,請跳過最後一步,只需要安裝nltk。32位二進位製版安裝 1.安裝python 選擇2.7.3版本。2.安裝numpy 可選 3.安裝nl...

Lua Socket在Windows平台下的使用

lua的乙個比較實用的拓展庫 lua socket 在windows 下平台的使用。在網上檢視了許多關於lua socket的安裝,發現大部分都是在 linux 下的安裝,關於在 windows 平台下的使用說明很少,而且發現問題挺多。本文將介紹乙個極其簡單的方式介紹 lua socket 在win...

Windows平台下eclipse配置

安裝 go 環境 環境變數配置 對 go 的環境變數進行配置,有些安裝是預設配置,有些需要手動的配置環境變數。go 環境驗證,在控制台中輸入 go version,如顯示以下內容,則表示輸入成功。安裝環境 201606061100 platformruntime 安裝配置 mingw64 mingw...