В каких случаях getcwd() возвращает NULL?

char cwd[256];
if (getcwd(cwd, sizeof(cwd)) == NULL) {
    return -1;
}

Сначала приходит на ум, что getcwd() мог вернуться NULLкогда cwd недостаточно велик. Есть ли другие случаи?

2 ответа

Решение

В его документации говорится:

ERRORS

    The getcwd() function shall fail if:

    [EINVAL]
        The size argument is 0.
    [ERANGE]
        The size argument is greater than 0, but is smaller than the length of the pathname +1.

    The getcwd() function may fail if:

    [EACCES]
        Read or search permission was denied for a component of the pathname.
    [ENOMEM]
        Insufficient storage space is available.
 If the length of the absolute pathname of the  current  working  direc‐
       tory,  including the terminating null byte, exceeds size bytes, NULL is
       returned, and errno is set to ERANGE; an application should  check  for
       this error, and allocate a larger buffer if necessary.

источник: man getcwd

Другие вопросы по тегам