對我自己的問題的長時間回答,使用谷歌搜索並沒有發現任何有用的東西,是篩選'ps'的來源。但在我這樣做之前,有沒有人願意提供懶人的解決方案? :-)是否有系統調用來獲取正在運行的進程的uid/gid?
我發現這個問題:Knowing the process status using procf/<pid>/status但是,該解決方案似乎沒有在3.2內核上可用。這個pstatus_t類型在新內核中可用嗎?如果是這樣,這是否意味着更新的內核提供了/ proc //狀態的二進制接口?
對我自己的問題的長時間回答,使用谷歌搜索並沒有發現任何有用的東西,是篩選'ps'的來源。但在我這樣做之前,有沒有人願意提供懶人的解決方案? :-)是否有系統調用來獲取正在運行的進程的uid/gid?
我發現這個問題:Knowing the process status using procf/<pid>/status但是,該解決方案似乎沒有在3.2內核上可用。這個pstatus_t類型在新內核中可用嗎?如果是這樣,這是否意味着更新的內核提供了/ proc //狀態的二進制接口?
目前,我能想出的唯一可行的解決方案就是沿着這條線。顯然,沒有去努力,看看是否實際工作,我希望它尚未...:
int len, pid, n, fd = open("/proc/12345/status", O_RDONLY | O_NOATIME);
char buf[4096], whitespace[50];
if (0 < (len = read(fd, buf, 4096)))
{
n = sscanf(buf, "Uid:%s%d ", whitespace, &pid);
}
的/ proc /自/狀態似乎一個很好的候選人,但是如果/ proc中未安裝? – Craig
你想要它爲當前進程,或任何其他進程給定一個PID? –
不是當前進程,基於pid的進程。忽略/ proc/self,那只是我將命令行想法轉換成ramblings。我的意思是/ proc//status。 –
Craig