私は主に動作するアプリケーションを持っていますが、:: popen()の呼び出しでerrnoをENOMEMに設定してエラーが発生する条件が1つあります。 ::のpopen()のmanページはのために::自体は、Linux上でこの短いコメントでENOMEMを示していますフォーク()のページにあなたを参照:ENOMEMの原因:: popen()
The fork() function may fail if:
ENOMEM Insufficient storage space is available.
私は本当にメモリが不足していた場合、私は疑問に思って、またはおそらくファイル記述子のような他のリソースですか? fork()はENOMEMにあなたのシステムの実際のメモリを使い果たしている以外のものを与えることができますか?これはCentos4です。
? pipe(2)はどこからfork(2)を参照していますか?そしてfork()のエラーがpipe()に関係するのはなぜですか? – bdonlan
おっと、それを捕まえてくれてありがとう、それはパイプではなく、ポープンです。 – WilliamKF
['strace(1)'](http://linux.die.net/man/1/strace)は何が起きていると言いますか? 'popen(3)'は 'pipe(2)'と 'fork(2)'を内部的に呼び出します。どの呼出しが 'ENOMEM'、' pipe'または 'fork'を返していますか? –