POSIX définit plusieurs de ces limites comme facultatives. Si une limite FOO n'est pas définie dans limits.h
, cela signifie que le système peut ne pas avoir une telle limite ou que la limite peut varier au moment de l'exécution ou en fonction du chemin auquel elle est appliquée. Dans ces cas, vous utilisez les pathconf
, fpathconf
ou sysconf
fonctions et les _PC_*
et _SC_*
macros, comme dans:
path_max = pathconf("/", _PC_PATH_MAX);
ou:
page_size = sysconf(_SC_PAGE_SIZE);
Malheureusement GNU (la bibliothèque GNU C) définit beaucoup limites comme variable d'exécution quand ils sont réellement constants sur Linux, dans certains (à mon avis, très erroné) espérons qu'un jour les limites seront supprimées et les applications pourront immédiatement profiter de la suppression des limites. Cependant, pour la robustesse des applications et du noyau, il est préférable d'avoir des limites fixes tant qu'elles sont suffisamment grandes (comme le sont les limites de Linux).
Il s'agit également, je le soupçonne, d'une tentative visant à encourager les applications à être portables sur des systèmes qui n'ont pas de limite définie par le système, comme GNU HURD. – caf
@caf: Je pense que vous avez compris la raison exacte. –