藍森林首頁 | 返回主頁 | 本站地圖 | 站內搜索 | 聯繫信箱 |
 您目前的位置:首頁 > 自由軟件 > 技術交流 > 應用編程


    

藍森林 http://www.lslnet.com 2006年6月6日 10:18


在C程序中如何Kill一個外部進程(程序)的問題

如何在我的C程序中Kill一個外部進程(程序)呢?
這個外部進程(程序)不是由我調用的,但我知道程序名。
現在我是手動在終端窗中用PS命令,查到它的ID號
然後Kill了它;現在要用程序自動KILL它。能行嗎?
多謝!

在C程序中如何Kill一個外部進程(程序)的問題

如果你是超級用戶,當然可以;
如果你是普通用戶,那麼這個進程的UID必須是和你的UID一樣才可以KILL.

在C程序中如何Kill一個外部進程(程序)的問題

多謝abyss:
那麼在C程序中如何作才能實現這個功能呢?
我要KILL掉的進程並不是我的C程序調用的。
比如:內存中正有3個名字叫WORK的程序運行,
我想一運行我的程序就將所有內存中運行的WORK程序
都KILL了。能行吧?

在C程序中如何Kill一個外部進程(程序)的問題

man kill ,kill()也是系統函數,具體原形在sys/signal.h中

在C程序中如何Kill一個外部進程(程序)的問題

我簡單講講,代碼就不寫了。
用popen打開ps -ef|grep work命令,從該命令的輸出中獲取進程id,調用kill()函數向這些id發送sig_kill信號,最後pclose掉前面打開的流,OK。Do you understand? Good luck.

在C程序中如何Kill一個外部進程(程序)的問題

popen 的效率低的厲害,建議如果做服務進程,想別的辦法。

在C程序中如何Kill一個外部進程(程序)的問題

to wangshim_:我也知道效率不高。那麼請問還有什麼辦法呢?

在C程序中如何Kill一個外部進程(程序)的問題

多謝各位啦!

在C程序中如何Kill一個外部進程(程序)的問題

system("killall work");



Copyright © 1999-2000 LSLNET.COM. All rights reserved. 藍森林網站 版權所有。 E-mail : webmaster@lslnet.com