Fedora Core 7 では、に依存するコードを書いていますARG_MAX
。ただし、 I であっても#include <limits.h>
、定数はまだ定義されていません。私の調査によると<sys/linux/limits.h>
、. 何が起きてる?
6302 次
3 に答える
8
limits.h に含まれていない理由は、現在のアーキテクチャのビット幅に基づいて整数型の値の範囲の制限を与える量ではないためです。これは、ISO 標準によって limits.h に割り当てられた役割です。
関心のある値は、実際にはハードウェアに限定されておらず、プラットフォームごと、おそらくシステム ビルドごとに異なる可能性があります。
正しいことはsysconf
、「ARG_MAX」または「_POSIX_ARG_MAX」を呼び出して尋ねることです。とにかく、それがPOSIX準拠のソリューションだと思います。
ACC。私のドキュメントでは、要求している値に基づいて unistd.h または limits.h のいずれかまたは両方を含めます。
もう 1 つのポイント: 関数の exec ファミリの多くの実装は、大きすぎる環境でそれらを呼び出そうとすると、E2BIG または同様の値を返します。これは、exec が実際に戻ることができる定義済みの条件の 1 つです。
于 2008-09-05T20:23:59.627 に答える
-1
ARG_MAX は /usr/include/linux/limits.h で定義されています。私の Linux カーネルのバージョンは 3.2.0-38 です。
于 2013-02-12T14:08:28.013 に答える