OSX 10.7 で実行されている C プログラムで使用できるファイル記述子の最大数を増やしたいと考えています。プロジェクトに次のコードを追加しましたが、失敗します。
struct rlimit limit;
if(getrlimit(RLIMIT_NOFILE, &limit))
{
perror("Failed to get limit");
return -1;
}
printf("%llu, %llu\n", limit.rlim_cur, limit.rlim_max);
limit.rlim_cur *= 4;
printf("%llu, %llu\n", limit.rlim_cur, limit.rlim_max);
if(setrlimit(RLIMIT_NOFILE, &limit))
{
perror("Failed to set limit");
return -1;
}
これはログを出力します:
4864, 9223372036854775807
19456, 9223372036854775807
Failed to set limit: Invalid argument
上限が少し高すぎるようです。どうしたの?