Remove a link to a file
Synopsis:
#include <stdio.h>
int remove( const char * filename );
Arguments:
- filename
- The path to the file that you want to delete.
Library:
libc
Use the -l c option to
qcc
to link against this library.
This library is usually included automatically.
Description:
The remove() function removes a link to a file:
- If the filename names a symbolic link, remove()
removes the link, but doesn't affect the file or directory that the
link goes to.
- If the filename isn't a symbolic link, remove()
removes the link and decrements the link count of the file that the
link refers to.
If the link count of the file becomes zero, and no process has the file open,
then the space that the file occupies is freed, and no one can access
the file anymore.
If one or more processes have the file open when the last
link is removed, the link is removed, but the removal of the file is delayed
until all references to it have been closed.
The remove() function also
works on directories; however, rmdir() is more efficient.
Returns:
- 0
- The operation was successful.
- Nonzero
- The operation failed (errno is set).
Errors:
- EACCES
- Search permission is denied for a component of filename,
or write permission is denied on the directory containing the link to be removed.
- EBUSY
- The directory named by filename can't be unlinked
because it's being used by the system or another process,
and the target filesystem or resource manager considers this to be an error.
- ENAMETOOLONG
- The filename argument exceeds PATH_MAX in length,
or a pathname component is longer than NAME_MAX.
- ENOENT
- The named file doesn't exist, or filename is an empty string.
- ENOSYS
- The remove() function isn't implemented for the filesystem specified
by filename.
- ENOTDIR
- A component of filename isn't a directory.
- EPERM
- The file named by filename is a directory,
and either the calling process doesn't have the appropriate privileges,
or the target filesystem or resource manager prohibits using remove() on directories.
- EROFS
- The directory entry to be unlinked resides on a read-only filesystem.
Examples:
#include <stdio.h>
#include <stdlib.h>
int main( void )
{
if( remove( "vm.tmp" ) ) {
puts( "Error removing vm.tmp!" );
return EXIT_FAILURE;
}
return EXIT_SUCCESS;
}
Classification:
ANSI,
POSIX 1003.1
Safety: |
|
Cancellation point |
Yes |
Interrupt handler |
No |
Signal handler |
No |
Thread |
Yes |