1. ホーム
  2. c

[解決済み] Minixです。プロセステーブルのサイズを決定する

2022-02-15 08:50:56

質問事項

可能なすべてのプロセスIDを反復処理したいのですが、そのためにはプロセス・テーブルの上限を知る必要があります。どうすればこれを知ることができますか?

私が考えているのは、次のようなことです。

    while (counter < table size)
{
    do something
}

解決方法は?

C言語でこれらの情報を直接取得するposix APIはないと思います。この種の情報を取得するにはpopen()関数でコマンドラインを呼び出す必要があります。 posix関数を使った全プロセスの表示 ).

システムの最大プロセス数は、ulimitコマンドで設定/確認できます。

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

あるいは、現在のプロセス ID の最大数をチェックすることもできます (ps aux show all processes, sed find last line, and awk find process 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);
}