HPlogo MPE/iX Developer's Kit Reference Manual Volume I: HP 3000 MPE/iX Computer Systems > Chapter 4  POSIX/iX Library Function Descriptions

unlink

» 

Technical documentation

Complete book in PDF
» Feedback

 » Table of Contents

 » Index

Removes a link from a file.

Syntax

   #include <unistd.h>

   int unlink (const char *pathname);

Parameters

pathname

A pointer to a string containing the pathname of a file to unlink (purge). The pathname must be terminated by a null character.

Return Values

0

Success.

-1

An error occurred. The file is not unlinked, and errno is set to indicate the error condition.

Description

The unlink() function removes the link name specified by pathname. It removes the filename pointed to by pathname from the parent directory, then decrements the file link count. When the link count of the file becomes zero and no process has the file open, the file is purged from the system and is no longer accessible.

If one or more processes have the file open when the link count becomes zero, the file is not purged until all references to the file have been closed.

Upon successful completion, unlink() marks for update the st_ctime and st_mtime time fields of the parent directory.

Implementation Considerations

Refer to the EFAULT, EIMPL, EPERM, and ESYSERR error descriptions below.

POSIX/iX does not support using unlink() on directories. Instead, use rmdir() to remove a directory.

POSIX/iX does not support multiple hard links to files or soft links to files or directories.

Every file has a link count of 1 when created. Files being unlinked cause the link count of the file to be decremented from 1 to 0.

Errors

If an error occurs, errno is set to one of the following values:

EACCESCAUSEThe calling process either does not have search permission to a component of the pathname or does not have write permission to the parent directory.
 ACTIONMake sure that the calling process has search permission for all components of the pathname and write permission to the parent directory.
EFAULTCAUSEThe system detected a NULL or bad address in attempting to use the pathname parameter or the pathname was not terminated by a null character.
 ACTIONMake sure that the pointer is correctly initialized.
EIMPLCAUSEThe pathname begins with two slash characters (//).
 ACTIONDo not begin pathnames with two slash characters (//).
ENAMETOOLONGCAUSE

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.

 ACTIONMake sure that both the component's length and the full pathname length do not exceed the {NAME_MAX} or {PATH_MAX} limits.
ENOENTCAUSEThe specified file does not exist, or pathname points to an empty string.
 ACTIONSpecify a valid pathname.
ENOTDIRCAUSEA component of the pathname is not a directory.
 ACTIONSpecify a valid pathname.
EPERMCAUSEThe specified file is a directory.
 ACTIONDo not attempt to unlink a directory. Use rmdir() instead.
ESYSERRCAUSEAn operating system error has occurred that does not map directly to any of the above errors.
   
 ACTIONExamine the MPE/iX error stack for the type of system error.

See Also

close(), open(), rmdir(), POSIX.1 (Section 5.5.1)

Feedback to webmaster