1

私は最近、プロセスごとに開いているファイル記述子の最大量を計算するプログラムを作成しました。

それは本質的に

int fd = creat("somefile.dat");
int count = 1;

while(1)
{

 int s = dup(fd);

  if (s == -1)
    break;

  count++;
}

printf("Max fd: %d", s);

では、この同じプログラムをどのように適用しますが、プロセスごとではなくシステム全体の最大fd量を見つけるにはどうすればよいでしょうか。

4

1 に答える 1

2

私はこれに対する解決策について複数のアイデアを持っています:

1-MINIXで許可されるプロセスの最大数にプロセスあたりの最大FDを掛けます

  • 私の唯一の懸念は、プロセス数*プロセスあたりのFDの下または上にある種のハードキャップがあることです

2-上記のプログラムを複数回実行するプログラムを作成します

  • どういうわけか元のプログラムにカウントを戻して合計する必要があるという規定があります
    • また、プログラム内から他のプロセスを呼び出して、そこから戻り値を取得する方法がわかりません。
    • さらに、どのようにしてすべてのプロセスを同時に実行できますか?プロセスの最大数をどのように知っていますか?また、プロセスの実行をいつ停止するかをどのように知っていますか?

PSあなたは私のecs150クラスにいる必要がありますね?

于 2012-04-26T02:53:51.860 に答える