c - path_max - unix max filename length




Где находится PATH_MAX в Linux? (2)

Какой файл заголовка я должен использовать с #include чтобы иметь возможность использовать PATH_MAX как int для определения размера строки?

Я хочу иметь возможность заявить:

char *current_path[PATH_MAX];

Но когда я это делаю, мой компилятор (Clang / LLVM в Linux) выдает следующую ошибку:

recursive_find6.c:29:20: error: use of undeclared identifier 'PATH_MAX'
char *current_path[PATH_MAX];
                   ^

Я попытался сделать поиск в Google, но все равно не повезло.

#include <limits.h> НЕ исправить проблему / ошибку.

Я также исправлю, что значение PATH_MAX является int?


Его в linux/limits.h .
#define PATH_MAX 4096 /* # chars in a path name including nul */

#include <linux/limits.h>

char current_path[PATH_MAX];

PATH_MAX есть некоторые недостатки, упомянутые в этом блоге (спасибо paulsm4)


Имейте в PATH_MAX , что пока неясно, определяет ли PATH_MAX максимальную длину с или без PATH_MAX байта. Это может быть одно или другое в разных операционных системах. Если вы не можете или не хотите проверять, в каком случае это происходит во время компиляции, безопаснее принудительно использовать искусственный лимит PATH_MAX - 1 . Береженого Бог бережет. (Очевидно, вам все равно нужно зарезервировать по меньшей мере PATH_MAX байты памяти для буферизации строки.)







clang