Question

Sur Fedora Core 7, je suis en train d'écrire du code qui s'appuie sur ARG_MAX.Cependant, même si je #include <limits.h>, la constante n'est pas encore défini.Mes recherches montrent qu'il est présent dans <sys/linux/limits.h>, mais ce qui est censé être portable à travers Win32/Mac/Linux, donc directement dont il n'est pas une option.Ce qui se passe ici?

Était-ce utile?

La solution

La raison pour laquelle il n'est pas dans les limites.h, c'est que ce n'est pas une quantité donnant les limites de la plage de valeurs d'un type intégral basé sur peu de largeur sur l'architecture actuelle.C'est le rôle assigné des limites.h par la norme ISO.

La valeur qui vous intéresse n'est pas le matériel lié à la pratique et peut varier d'une plateforme à une autre et peut-être de la construction du système de la construction du système.

La bonne chose à faire est d'appeler sysconf et lui demander "ARG_MAX" ou "_POSIX_ARG_MAX".J' pense c'est la POSIX solution de toute façon.

Acc.pour ma documentation, vous avez un ou les deux unistd.h ou limites.h basé sur les valeurs que vous demandez.

Un autre point:de nombreuses implémentations de l'exec de la famille de retour des fonctions de E2BIG ou une valeur similaire si vous essayez de les appeler avec un grand environnement.C'est l'une des conditions définies en vertu de laquelle exec peut réellement de retour.

Autres conseils

ARG_MAX est définie dans /usr/include/linux/limites.h.Mon noyau linux version 3.2.0-38.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top