0

次の値でクラッシュします:-

Pollは、「errno」を24(EMFILE)として指定する使用中のシステムコールであり、structpollfdの値は「fd= 1022、events = 1、revents=32」です。

ここでは、「fd = 1022」で目覚めていますが、なぜ「errno」が24と表示されているのですか(EMFILE /開いているファイルが多すぎます/)

無限ループで動作する複数のスレッドがあります。

4

1 に答える 1

2

私のマシンでulimit -aは、最大オープンファイル数が1024と表示されます。1022は本当にその限界に近づいています。

ファイルを開こうとして失敗するコードがありますか?errnoをEMFILEに設定しているのは、おそらく他のシステムコールです。

fdsを開くコードからの戻り値を処理していることを確認してください。

どこかにファイル記述子がリークしていないことを確認してください。

このコードが適切な権限で実行されている場合は、ulimit -nまたはを使用して最大オープンファイル制限を増やすことができますsetrlimit()

于 2010-07-22T22:17:53.773 に答える