在什么情况下getcwd()返回NULL?

时间:2015-01-06 12:37:46

标签: c getcwd

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

首先想到的是,当cwd不够大时,getcwd()可以返回NULL。还有其他案例吗?

2 个答案:

答案 0 :(得分:5)

Its documentation州:

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.

答案 1 :(得分:1)

 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