Přenosný způsob, jak to udělat, je:
#define _POSIX_C_SOURCE 1
#include <limits.h>
Specifikace:https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/limits.h.html
Je v 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
má nějaké nedostatky, jak je uvedeno v tomto blogu (díky paulsm4)
Uvědomte si, že stále není jasné, zda PATH_MAX
definuje maximální délku s nebo bez koncového nulového bajtu. Může to být jedno nebo druhé v různých operačních systémech. Pokud během kompilace nemůžete nebo nechcete zkontrolovat, o jaký případ se jedná, je bezpečnější vynutit umělý limit PATH_MAX - 1
. Jistota je jistota. (Samozřejmě stále musíte rezervovat alespoň PATH_MAX
bajtů paměti pro vyrovnávací paměť řetězce.)