2

私はほとんど動作するアプリケーションを持っていますが、::popen() の呼び出しでエラーが発生し、errno が ENOMEM に設定されているという状況が 1 つあります。::popen() の man ページでは、::fork() のページを参照してください。このページには、Linux に関する次の短いコメントが付いた ENOMEM がリストされています。

   The fork() function may fail if:

   ENOMEM Insufficient storage space is available.

本当にメモリが不足しているのか、それともファイル記述子のような他のリソースが不足しているのか疑問に思っています。fork() は、システムの実際のメモリ不足以外の理由で ENOMEM を与えることができますか? Centos4です。

4

1 に答える 1

1

ENOMEM は ::popen() を繰り返した後に ::pclose() を呼び出さず、最終的にファイル記述子を使い果たしたことが原因であることを確認しました。

于 2011-06-21T16:17:07.520 に答える