ubuntu 10.04でコンパイルするときにpath_maxは宣言されていません

StackOverflow https://stackoverflow.com/questions/4267390

  •  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の制限があるように)十分に大きい限り、固定制限を持つ方がはるかに優れています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top