2017-10-14 189 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); 
}