2012-04-12 54 views
1

我有一個清理的過程,需要殺死其PID作爲參數傳遞給它傳遞的過程中殺死在C進程。如何當PID知道

我可以很好的使用kill(pid_t, SIGKILL)殺死它。但是我得到的PID是一個整數值。所以我不能得到一個pid_t。有沒有辦法使用和整數PID來殺死進程?

好吧。我可以很好地使用system("kill -9 <pid>");

我要尋找從C.

回答

2

PID如何首先進入整數類型?如果你的函數需要一個PID,它應該把它作爲pid_t。如果是文本參數,則應將其解析爲pid_t,而不是int

除非你有一些不尋常的情況,只有類似於整數變量,你應該永遠儲存在PID是pid_t

+1

'pid_t'是有符號整數類型,因此它肯定是有效存儲的PID在'intmax_t'。實際上,它們也可以用普通的'int'存儲。很可能唯一的原因是'pid_t'甚至被髮明是因爲一些醜陋的遺留系統對pid使用'short',而較新的系統想要使用'int',因此'pid_t'被髮明用於原型,以便每個系統可以根據需要將'pid_t'定義爲'short'或'int'(或者不太可能,別的東西)。 – 2012-04-12 06:36:40

+0

據我所知,沒有要求'pid_t'是一個有符號的整數類型。 (你有引用嗎?)只需要'(pid_t)-1'和'(pid_t)0'工作並且不合法的PID重疊。這當然可以用無符號整數類型來完成(就像許多系統用'time_t'所做的那樣),它當然也適用於浮點類型。 – 2012-04-12 07:26:47

+2

「blksize_t,pid_t和ssize_t應爲有符號整數類型。」資料來源:http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_types.h.html – 2012-04-12 10:12:11

1

pid_t是一個符號整數。見libc。只是在kill

1

將爲pid_t使用整數值作爲第一個參數是在types.h中定義的數據類型只有一個帶符號的整數類型。

沒有ü嘗試直接分配給您的整數將爲pid_t變量? 它不工作?