Minix:确定进程的大小 table

Minix: Determining size of process table

我想遍历所有可能的进程 ID,但为此,我需要知道进程的限制 table。我怎样才能找到它?

我的想法是做类似的事情

    while (counter < table size)
{
    do something
}

我认为没有posix API可以直接在C中获取这些信息,你需要popen()函数调用命令行来获取这种信息,我不推荐系统() 虽然它类似于 popen.(Display all process using a posix function).

系统最大进程数可以通过命令ulimit set/check。

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

或者您可以检查当前进程 ID 中的当前最大数量。(ps aux 显示所有进程,sed 查找最后一行,awk 查找进程 ID)

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