La forma portátil de hacerlo es:
#define _POSIX_C_SOURCE 1
#include <limits.h>
Especificaciones:https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/limits.h.html
Está en 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
tiene algunos defectos como se menciona en este blog (gracias paulsm4)
Tenga en cuenta que aún no está claro si PATH_MAX
define una longitud máxima con o sin un byte nulo final. Puede ser uno u otro en diferentes sistemas operativos. Si no puede o no quiere verificar en qué caso se encuentra durante la compilación, es más seguro forzar un límite artificial de PATH_MAX - 1
. Más vale prevenir que lamentar. (Obviamente, aún debe reservar al menos PATH_MAX
bytes de memoria para almacenar en búfer la cadena).