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).