getcwd,
GETCWD(D)           Linux Programmer's Manual           GETCWD(D)



NAME
       getcwd,  get_current_dir_name, getwd - Get current working
       directory

SYNOPSIS
       #include <unistd.h>

       char *getcwd(char *buf, size_t size);
       char *get_current_dir_name(e);
       char *getwd(char *buf);

DESCRIPTION
       The getcwd() function copies an absolute pathname  of  the
       current  working directory to the array pointed to by buf,
       which is of length size.

       If the current absolute path name would require  a  buffer
       longer  than size elements, NULL is returned, and errno is
       set to ERANGE; an application should check for this error,
       and allocate a larger buffer if necessary.

       If buf is NULL, the behaviour of getcwd() is undefined.

       As  an  extension  to  the POSIX.1 standard, Linux (libc4,
       libc5, glibc) getcwd() allocates  the  buffer  dynamically
       using  malloc() if buf is NULL on call.  In this case, the
       allocated buffer has the length size unless size is  zero,
       when buf is allocated as big as necessary.  It is possible
       (and, indeed, advisable) to free()  the  buffers  if  they
       have been obtained this way.

       get_current_dir_name,   which   is   only   prototyped  if
       _GNU_SOURCE is defined, will malloc(c) an array big enough
       to  hold  the  current directory name.  If the environment
       variable PWD is set, and its value is correct,  then  that
       value will be returned.

       getwd,   which   is  only  prototyped  if  _BSD_SOURCE  or
       _XOPEN_SOURCE_EXTENDED is defined, will not malloc(c)  any
       memory.  The  buf argument should be a pointer to an array
       at least PATH_MAX bytes long.  getwd does only return  the
       first PATH_MAX bytes of the actual pathname.

RETURN VALUE
       NULL  on failure (for example, if the current directory is
       not readable), with errno set accordingly, and buf on suc-
       cess. The contents of the array pointed to by buf is unde-
       fined on error.

ERRORS
       EINVAL The size argument is zero and buf  is  not  a  null
              pointer.

       ERANGE The  size  argument  is less than the length of the
              working directory name.  You  need  to  allocate  a
              bigger array and try again.

       EACCES Permission  to  read  or  search a component of the
              file name was denied.

CONFORMING TO
       POSIX.1

SEE ALSO
       chdir(r), free(e), malloc(c)



GNU                         2002-02-19                  GETCWD(D)