![]() |
![]() |
![]() |
![]() |
Create a link to an existing file
#include <unistd.h> int link( const char* existing, const char* new );
libc
Use the -l c option to qcc to link against this library. This library is usually included automatically.
The link() function creates a new directory entry named by new to refer to (that is, to be a link to) an existing file named by existing. The function atomically creates a new link for the existing file, and increments the link count of the file by one.
![]() |
This implementation doesn't support using link() on directories or the linking of files across filesystems (different logical disks). |
If the function fails, no link is created, and the link count of the file remains unchanged.
If link() succeeds, the st_ctime field of the file and the st_ctime and st_mtime fields of the directory that contains the new entry are marked for update.
/* * The following program performs a rename * operation of argv[1] to argv[2]. * Please note that this example, unlike the * library function rename(), ONLY works if * argv[2] doesn't already exist. */ #include <stdio.h> #include <unistd.h> #include <stdlib.h> int main( int argc, char** argv ) { /* Create a link of argv[1] to argv[2]. */ if( link( argv[1], argv[2] ) == -1 ) { perror( "link" ); return( EXIT_FAILURE ); } if( unlink( argv[1] ) == -1 ) { perror( argv[1] ); return( EXIT_FAILURE ); } return( EXIT_SUCCESS ); }
Safety: | |
---|---|
Cancellation point | No |
Interrupt handler | No |
Signal handler | Yes |
Thread | Yes |
errno, rename(), symlink(), unlink()
![]() |
![]() |
![]() |
![]() |