rmdir [ MPE/iX Developer's Kit Reference Manual Volume I ] MPE/iX 5.0 Documentation
MPE/iX Developer's Kit Reference Manual Volume I
rmdir
Purges (removes) a directory.
Syntax
#include <unistd.h>
int rmdir (const char *pathname);
Parameters
pathname A pointer to a string containing a pathname of the directory
to purge. The pathname must be terminated by a null
character.
Return Values
0 Success.
-1 An error occurred. The directory is not removed, and errno is
set to indicate the error condition.
Description
The rmdir() function purges (removes) the directory specified by
pathname. The directory is removed only if it is an empty directory
(containing only the dot and dot dot directory entries).
If the link count of the directory becomes zero, and no process has the
directory open, the directory is purged from the system and is no longer
accessible.
If one or more processes have the directory open when the last link is
removed, the dot and dot dot entries are removed before rmdir() returns
and no new entries can be created; however, the directory is not purged
until all references to the directory have been closed.
Upon successful completion, rmdir() marks for update the st_ctime and
st_mtime time fields of the parent directory.
Implementation Considerations
Refer to the EFAULT, EIMPL, and ESYSERR error descriptions below.
The rmdir() function cannot remove the dot and dot dot directory entries,
the root directory, MPE/iX accounts, or MPE/iX groups.
Errors
If an error occurs, errno is set to one of the following values:
EACCES CAUSE The calling process either does not have search
permission to a component of the pathname or does not
have write permission to the parent directory.
ACTION Make sure that the calling process has search
permission to all components of the pathname and
write permission to the parent directory.
EFAULT CAUSE The system detected a NULL or bad address in
attempting to use the pathname parameter, or the
pathname was not terminated by a null character.
ACTION Make sure that the pointer is correctly initialized.
EIMPL CAUSE An attempt was made to remove the dot or dot dot
directory entries, the root directory, an MPE/iX
account, or an MPE/iX group; or the pathname began
with two slash characters (//).
ACTION Remove MPE/iX accounts and MPE/iX groups using MPE/iX
CI commands. The root directory can never be
removed. Do not begin pathnames with two slash
characters (//).
ENAMETOOLONG CAUSE One of the following:
* The length of the pathname exceeds the
{PATH_MAX} limit (defined in the file
<limits.h>).
* A component of the pathname is longer than
{NAME_MAX} (defined in <limits.h>), and
{_POSIX_NO_TRUNC} is in effect for that
directory.
ACTION Make sure that both the component's length and the
full pathname length do not exceed the {NAME_MAX} or
{PATH_MAX} limits.
Table 4-0. (cont.)
ENOENT CAUSE The specified directory does not exist, or pathname
points to an empty string.
ACTION Specify a valid pathname.
ENOTDIR CAUSE A component of the pathname is not a directory.
ACTION Specify a valid pathname.
ENOTEMPTY CAUSE The directory specified by pathname cannot be removed
because it is not empty.
ACTION Make sure that the directory is an empty directory.
ESYSERR CAUSE An operating system error has occurred that does not
map directly to any of the above errors.
ACTION Examine the MPE/iX error stack for the type of system
error.
See Also
mkdir(), unlink(), POSIX.1 (Section 5.5.2)
MPE/iX 5.0 Documentation