Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
getcwd(3C)		 Standard C Library Functions		    getcwd(3C)

NAME
       getcwd -	get pathname of	current	working	directory

SYNOPSIS
       #include	<unistd.h>

       char *getcwd(char *buf, size_t size);

DESCRIPTION
       The  getcwd() function places an	absolute pathname of the current work-
       ing directory in	the array pointed to by	 buf,  and  returns  buf.  The
       pathname	 copied	 to the	array contains no components that are symbolic
       links. The size argument	is the size in bytes of	 the  character	 array
       pointed	to  by buf and must be at least	one greater than the length of
       the pathname to be returned.

       If buf is not a null pointer, the  pathname  is	stored	in  the	 space
       pointed to by buf.

       If  buf	is  a null pointer, getcwd() obtains size bytes	of space using
       malloc(3C). The pointer returned	by getcwd() can	be used	as  the	 argu-
       ment in a subsequent call to free().

RETURN VALUES
       Upon  successful	 completion, getcwd() returns the buf argument.	Other-
       wise, the function returns a null pointer and sets  errno  to  indicate
       the error.

ERRORS
       The getcwd() function will fail if:

       EINVAL	       The size	argument is equal to 0.

       ERANGE	       The  size  argument is greater than 0 and less than the
		       length of the pathname plus 1.

       The getcwd() function may fail if:

       EACCES	       A parent	directory cannot be read to get	its name.

       ENOMEM	       Insufficient storage space is available.

EXAMPLES
       Example 1: Determine the	 absolute  pathname  of	 the  current  working
       directory.

       The  following  example	returns	 a  pointer to an array	that holds the
       absolute	pathname of the	current	 working  directory.  The  pointer  is
       returned	 in  the ptr variable, which points to the buf array where the
       pathname	is stored.

       #include	<stdlib.h>
       #include	<unistd.h>
       ...
       long size;
       char *buf;
       char *ptr;
       size = pathconf(".", _PC_PATH_MAX);
       if ((buf	= (char	*)malloc((size_t)size))	!= NULL)
	      ptr = getcwd(buf,	(size_t)size);
       ...

USAGE
       Applications should exercise care when using  chdir(2)  in  conjunction
       with  getcwd().	The current working directory is global	to all threads
       within a	process. If more than one thread calls chdir() to  change  the
       working	directory,  a  subsequent call to getcwd() could produce unex-
       pected results.

EXAMPLES
       Example 2: Printing the current working directory

       The following example prints the	current	working	directory.

       #include	<unistd.h>
       #include	<stdio.h>

       main()
       {
	   char	*cwd;
	   if ((cwd = getcwd(NULL, 64))	== NULL) {
	       perror("pwd");
	       exit(2);
	   }
	   (void)printf("%s\n",	cwd);
	   free(cwd); /* free memory allocated by getcwd() */
	   return(0);
       }

ATTRIBUTES
       See attributes(5) for descriptions of the following attributes:

       +-----------------------------+-----------------------------+
       |      ATTRIBUTE	TYPE	     |	    ATTRIBUTE VALUE	   |
       +-----------------------------+-----------------------------+
       |Interface Stability	     |Standard			   |
       +-----------------------------+-----------------------------+
       |MT-Level		     |MT-Safe			   |
       +-----------------------------+-----------------------------+

SEE ALSO
       chdir(2), malloc(3C), attributes(5), standards(5)

SunOS 5.10			  18 Oct 2004			    getcwd(3C)

NAME | SYNOPSIS | DESCRIPTION | RETURN VALUES | ERRORS | EXAMPLES | USAGE | EXAMPLES | ATTRIBUTES | SEE ALSO

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=getcwd&sektion=3c&manpath=SunOS+5.10>

home | help