Второй параметр getcwd
Что мне следует заполнить вторым параметром функции getcwd, если я читаю текущий каталог?
2 ответа
Размер буфера, который вы хотите заполнить:
char result[PATH_MAX];
char *r = getcwd(result, PATH_MAX);
Неспособность установить это правильно (или место ENAMETOOLONG
/ERANGE
) может привести к проблемам переполнения буфера.
Предостережение: не все платформы предоставляют PATH_MAX. Если вы можете быть уверены, что он есть на ваших платформах, это очень удобно.
Вы также можете использовать realpath()
, (POSIX.1-2008), который будет malloc()
Память для вас, чтобы сделать это более чисто:
char *result = realpath(".", NULL);
// do stuff with result
free(result);
Длина буфера, который вы указываете в первом параметре, чтобы переполнение не могло произойти.