次の値でクラッシュします:-
Pollは、「errno」を24(EMFILE)として指定する使用中のシステムコールであり、structpollfdの値は「fd= 1022、events = 1、revents=32」です。
ここでは、「fd = 1022」で目覚めていますが、なぜ「errno」が24と表示されているのですか(EMFILE /開いているファイルが多すぎます/)
無限ループで動作する複数のスレッドがあります。
次の値でクラッシュします:-
Pollは、「errno」を24(EMFILE)として指定する使用中のシステムコールであり、structpollfdの値は「fd= 1022、events = 1、revents=32」です。
ここでは、「fd = 1022」で目覚めていますが、なぜ「errno」が24と表示されているのですか(EMFILE /開いているファイルが多すぎます/)
無限ループで動作する複数のスレッドがあります。
私のマシンでulimit -a
は、最大オープンファイル数が1024と表示されます。1022は本当にその限界に近づいています。
ファイルを開こうとして失敗するコードがありますか?errnoをEMFILEに設定しているのは、おそらく他のシステムコールです。
fdsを開くコードからの戻り値を処理していることを確認してください。
どこかにファイル記述子がリークしていないことを確認してください。
このコードが適切な権限で実行されている場合は、ulimit -n
またはを使用して最大オープンファイル制限を増やすことができますsetrlimit()
。