2017-10-14 58 views
-1

我想遍歷所有可能的進程ID,但爲此,我需要知道進程表的限制。我怎樣才能找到這個?Minix:確定進程表的大小

我的想法是做類似

while (counter < table size) 
{ 
    do something 
} 
+0

歡迎堆棧溢出!請閱讀[如何提出一個好問題](https://stackoverflow.com/help/how-to-ask)。你的問題應該是具體的,你的相關代碼應該[最小,完整和可驗證](https://stackoverflow.com/help/mcve)。 –

回答

0

我覺得沒有POSIX API來獲取這些信息直接在C,你需要的popen()函數來調用命令行來獲得這種信息的,我不推薦system(),雖然它與popen類似(Display all process using a posix function)。

系統最大進程數可以通過ulimit命令設置/檢查。

popen("ulimit -a max user processes","r"); 

,或者你可以在當前進程的id檢查當前的最大數量。(PS輔助顯示的所有進程,找到sed的最後一行,和awk查找進程ID)

FILE *fp = popen("ps aux|sed -n '$p'|awk '{print $2F}'","r"); 
if(NULL!=fp) 
{ 
    char buff[1024]; 
    fgets(buff,1024,fp); 
    printf("%s\n",buff); 
    pclose(fp); 
}