Node:Working Directory, Next:Accessing Directories, Up:File System Interface
Each process has associated with it a directory, called its current working directory or simply working directory, that is used in the resolution of relative file names (see File Name Resolution).
When you log in and begin a new session, your working directory is
initially set to the home directory associated with your login account
in the system user database. You can find any user's home directory
using the getpwuid
or getpwnam
functions; see User Database.
Users can change the working directory using shell commands like
cd
. The functions described in this section are the primitives
used by those commands and by other programs for examining and changing
the working directory.
Prototypes for these functions are declared in the header file
unistd.h
.
char * getcwd (char *buffer, size_t size) | Function |
The getcwd function returns an absolute file name representing
the current working directory, storing it in the character array
buffer that you provide. The size argument is how you tell
the system the allocation size of buffer.
The GNU library version of this function also permits you to specify a
null pointer for the buffer argument. Then The return value is buffer on success and a null pointer on failure.
The following
|
You could implement the behavior of GNU's getcwd (NULL, 0)
using only the standard behavior of getcwd
:
char * gnu_getcwd () { size_t size = 100; while (1) { char *buffer = (char *) xmalloc (size); if (getcwd (buffer, size) == buffer) return buffer; free (buffer); if (errno != ERANGE) return 0; size *= 2; } }
See Malloc Examples, for information about xmalloc
, which is
not a library function but is a customary name used in most GNU
software.
char * getwd (char *buffer) | Deprecated Function |
This is similar to getcwd , but has no way to specify the size of
the buffer. The GNU library provides getwd only
for backwards compatibility with BSD.
The buffer argument should be a pointer to an array at least
|
char * get_current_dir_name (void) | Function |
This get_current_dir_name function is bascially equivalent to
getcwd (NULL, 0) . The only difference is that the value of
the PWD variable is returned if this value is correct. This is a
subtle difference which is visible if the path described by the
PWD value is using one or more symbol links in which case the
value returned by getcwd can resolve the symbol links and
therefore yield a different result.
This function is a GNU extension. |
int chdir (const char *filename) | Function |
This function is used to set the process's working directory to
filename.
The normal, successful return value from |
int fchdir (int filedes) | Function |
This function is used to set the process's working directory to
directory associated with the file descriptor filedes.
The normal, successful return value from
|