|
Standard C Library Functions | dirname(3C) |
| dirname - report the parent directory name of a file path name |
SYNOPSIS
|
#include <libgen.h> char *dirname(char *path); |
|
The dirname() function takes a pointer to a character string that contains a pathname, and returns a pointer to a string that is a pathname of the parent directory of that file.
Trailing '/' characters in the path are not counted as part of the path.
If path does not contain a '/', then dirname() returns a pointer to the string "." . If path is a null pointer or points to an empty
string, dirname() returns a pointer to the string "." .
|
|
The dirname() function returns a pointer to a string that is the parent directory of path. If path is a null pointer or points to an
empty string, a pointer to a string "." is returned.
|
| Example 1. A sample code using the dirname function.
|
Input String | Output String |
"/usr/lib"" | "/usr" |
"/usr/" | "/" |
"usr" | "/" |
"/" | "/" |
"." | "." |
".." | "." |
The following code fragment reads a path name, changes directory to the parent directory of the named file (see chdir(2)), and opens the file.
|
char path[100], *pathcopy;
int fd;
gets (path);
pathcopy = strdup (path);
chdir (dirname (pathcopy) );
free (pathcopy);
fd = open (basename (path), O_RDONLY);
|
|
|
|
The dirname() function may modify the string pointed to by path, and may return a pointer to static storage that may then be overwritten by subsequent calls
to dirname().
The dirname() and basename(3C) functions together yield a complete
pathname. The expression dirname(path) obtains the pathname of the directory where basename(path) is found.
When compiling multithreaded applications, the _REENTRANT flag must be defined on the compile line. This flag should only be used in multithreaded applications.
|
|
See attributes(5) for descriptions of the following
attributes:
ATTRIBUTE TYPE | ATTRIBUTE VALUE |
MT-Level | MT-Safe |
|
| |