os.fork()正常返回創(chuàng)建的子進(jìn)程id,可以使用os.kill(pid,sig)殺死子進(jìn)程。
os.kill(pid,sig)關(guān)閉一個(gè)進(jìn)程,pid是進(jìn)程號(hào),sig是信號(hào)。與fork配合使用,例如你剛才用fork創(chuàng)建了一個(gè)子進(jìn)程,它的pid是11990,那么調(diào)用os.kill(11990,signal.CTRL_BREAK_EVENT)就以ctrl+c的方式殺死了這個(gè)進(jìn)程...
ubuntu下,也就是linux下,通常會(huì)用kill-事件編號(hào)實(shí)現(xiàn)。你查一下LINUX下的事件就明白了。kill進(jìn)程號(hào)實(shí)現(xiàn)上是發(fā)了一個(gè)信號(hào)給指定的進(jìn)程。在python里,也可以加載事件處理模塊,處理來(lái)自其它程序發(fā)過來(lái)的信號(hào),當(dāng)然你...
NP.start()os.kill(id,9)
subprocess可以開啟一個(gè)子線程,在子線程里面調(diào)用,在你需要的時(shí)候就可以把這個(gè)子線程關(guān)掉,這樣代碼也更靈活例如:p=subprocess.Popen("yourcommand")todoanythingyouwanttime.sleep(10)p.kill()這段代碼就是在"...
最后自己再退出。這是穩(wěn)妥的辦法。另外的辦法是,某一個(gè)子線程專用于監(jiān)控狀態(tài)。它發(fā)現(xiàn)狀態(tài)不對(duì)時(shí),直接強(qiáng)制進(jìn)程退出。辦法1,發(fā)消息給主進(jìn)程,讓主進(jìn)程退出。辦法2:用kill,pskill等方法,直接按進(jìn)程PID殺進(jìn)程。
用到threading的Timer,也類似單片機(jī)那樣子,在中斷程序中再重置定時(shí)器,設(shè)置中斷,python實(shí)例代碼如下:importthreadingimporttimedefchange_user():print('這是中斷,切換賬號(hào)')t=threading.Timer(3,change_user)t....
可以考慮改用subprocess這個(gè)庫(kù)來(lái)實(shí)現(xiàn)比如p=subprocess.Popen([‘yourcommand’,'paramsandoptions'])try:p.wait(my_timeout)exceptsubp.TimeoutExpired:p.kill()
os.system是執(zhí)行命令,是否打印取決于命令是否有返回如果你想不讓其打印可以在命令中做手腳如:os.system('taskkill/IMdllhost.exe>NUL')
os.system的返回值是運(yùn)行結(jié)果,用p命名沒什么意義,建議用Popen比較好控制,例如importsubprocessa=subprocess.Popen('dir',shell=True)然后就可以用a.kill()來(lái)殺進(jìn)程