7

8.04用に作成されたUbuntu 10.04でCプログラムをコンパイルしようとしています。PATH_MAXで定義する必要がある およびその他の定数を使用したため、失敗しますlimits.h。さまざまなリソースによると、これは POSIX 互換の C ライブラリの一部である必要があります。

これは Ubuntu 10.04 のバグですか、それともこれを解決する適切な方法はありますか?

4

1 に答える 1

9

POSIXは、そのような多くの制限をオプションとして定義しています。で制限FOOが定義されlimits.hていない場合は、システムにそのような制限がないか、実行時に制限が変化するか、適用されるパス名に依存する可能性があることを意味します。このような場合、次のようにpathconf、、、fpathconfまたはsysconf関数と_PC_*および_SC_*マクロを使用します。

path_max = pathconf("/", _PC_PATH_MAX);

また:

page_size = sysconf(_SC_PAGE_SIZE);

残念ながら、GNU(GNU Cライブラリ)は、Linuxで実際に一定である場合、多くの制限を実行時変数として定義しています。制限の削除の利点。ただし、アプリケーションとカーネルの堅牢性については、(Linuxの制限と同様に)十分に大きい限り、制限を固定する方が実際にははるかに優れています。

于 2010-11-24T15:41:14.860 に答える