Lors d'une simple programmation en C, j'ai rencontré le même problème. Sur votre système Linux, le répertoire /usr/include contient de nombreux fichiers d'en-tête spécifiques au système d'exploitation Linux.
find . -name "*.h" | xargs grep PATH_MAX
Vous devriez voir plusieurs en-têtes définissant PATH_MAX ; malheureusement, cette valeur est définie différemment selon les en-têtes. Voici une liste provenant de mon Ubuntu (j'ai également supprimé manuellement quelques faux positifs du programme grep).
./x86_64-linux-gnu/bits/posix1_lim.h:#define _POSIX_PATH_MAX 256
./X11/InitialI.h:#ifndef PATH_MAX
./X11/InitialI.h:#define PATH_MAX 512
./X11/InitialI.h:#ifndef PATH_MAX
./X11/InitialI.h:#define PATH_MAX MAXPATHLEN
./X11/InitialI.h:#define PATH_MAX 1024
./X11/Xos.h:# define PATH_MAX 4096
./X11/Xwindows.h:#if defined(WIN32) && (!defined(PATH_MAX) || PATH_MAX < 1024)
./X11/Xwindows.h:# undef PATH_MAX
./X11/Xwindows.h:# define PATH_MAX 1024
./X11/Xosdefs.h:# ifndef PATH_MAX
./X11/Xosdefs.h:# define PATH_MAX 4096
./X11/Xosdefs.h:# ifndef PATH_MAX
./X11/Xosdefs.h:# define PATH_MAX 1024
./X11/extensions/XKBsrv.h:#define PATH_MAX MAXPATHLEN
./X11/extensions/XKBsrv.h:#define PATH_MAX 1024
./python2.7/osdefs.h:#ifndef PATH_MAX
./python2.7/osdefs.h:#define PATH_MAX MAXPATHLEN
./python2.7/osdefs.h:#if defined(PATH_MAX) && PATH_MAX > 1024
./python2.7/osdefs.h:#define MAXPATHLEN PATH_MAX
./linux/limits.h:#define PATH_MAX 4096 /* # chars in a path name including nul */
./linux/btrfs.h:#define BTRFS_INO_LOOKUP_PATH_MAX 4080
./linux/un.h:#define UNIX_PATH_MAX 108
L'en-tête /linux/limits.h a le plus grand nombre et devrait être le plus authentique à inclure. Une autre stratégie consiste à définir la vôtre avec un nom différent, par exemple PATHLEN (4080 est suffisamment long pour la plupart des situations pratiques). L'essentiel est d'apprendre à utiliser find pour chercher des réponses à vos questions.
3 votes
Veuillez consulter cette question : stackoverflow.com/questions/833291/
23 votes
Vous souhaitez probablement
char current_path[PATH_MAX];
au lieu dechar *current_path[PATH_MAX];
- vous voulez une chaîne de caractères plutôt qu'un tableau de pointeurs.0 votes
Ou celui-ci stackoverflow.com/questions/4267390/