ubuntu 10.04でコンパイルするときにpath_maxは宣言されていません
-
28-09-2019 - |
質問
8.04で作られたUbuntu 10.04でCプログラムをコンパイルしようとしています。使用したために失敗します PATH_MAX
および定義する必要がある他の定数 limits.h
. 。さまざまなリソースによると、POSIX互換Cライブラリの一部である必要があります。
これはUbuntu 10.04のバグですか、それともこれを解決する適切な方法はありますか?
解決
POSIXは、そのような多くの制限をオプションであると定義しています。制限fooが定義されていない場合 limits.h
, 、それは、システムにそのような制限がない場合があるか、制限が実行時に異なる場合があるか、適用されているパス名に依存する可能性があることを意味します。これらの場合、あなたはを使用します pathconf
, fpathconf
, 、 また sysconf
関数と _PC_*
と _SC_*
マクロ、
path_max = pathconf("/", _PC_PATH_MAX);
また:
page_size = sysconf(_SC_PAGE_SIZE);
残念ながら、GNU(GNU C Library)は、Linuxで実際に一定である場合、多くの制限をランタイムの可変と定義しています。制限の除去の利点。ただし、アプリケーションとカーネルの堅牢性の場合、実際には、Linuxの制限があるように)十分に大きい限り、固定制限を持つ方がはるかに優れています。
所属していません StackOverflow