-2

Linux で開いているファイル記述子のシステム制限を超える小さな C プログラムを作成しました。しかし、しきい値が交差していないことがわかります。

Cコードは次のとおりです。

#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
int main()
{
  int i, fd[9000];
  for(i=0; i<9000; i++)
  {
   fd[i]=open("test.txt", O_RDWR);
  }
  while(1);
}

制限を超えてエラーメッセージが表示されると思います。しかし、バックグラウンドで実行しlsof | wc -lても増加しません。

その理由は何ですか?

4

4 に答える 4

0

これは機能し、lsof ./test.txt | wc -l1021 の成功したオープンを報告します。(プログラム自体も同様です。)

#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>

int main()
{
  int i, fd[9000];
  for(i=0; i<9000; i++)
  {
   fd[i]=open("test.txt", O_RDWR| O_CREAT, 0644);
   if (fd[i] < 0) break;
  }
 fprintf(stderr, "I is now %d\n" , i);
  while(1);
  return 0;
}
于 2013-10-23T17:12:46.133 に答える