SYMLINK(2)          Linux Programmer's Manual          SYMLINK(2)

       symlink - make a new name for a file

       #include <unistd.h>

       int symlink(const char *oldpath, const char *newpath);

       symlink  creates  a symbolic link named newpath which con-
       tains the string oldpath.

       Symbolic links are interpreted at run-time as if the  con-
       tents of the link had been substituted into the path being
       followed to find a file or directory.

       Symbolic links may contain ..  path components, which  (if
       used  at the start of the link) refer to the parent direc-
       tories of that in which the link resides.

       A symbolic link (also known as a soft link) may  point  to
       an  existing file or to a nonexistent one; the latter case
       is known as a dangling link.

       The permissions of a symbolic  link  are  irrelevant;  the
       ownership  is  ignored  when  following  the  link, but is
       checked when removal or renaming of the link is  requested
       and the link is in a directory with the sticky bit set.

       If newpath exists it will not be overwritten.

       On  success,  zero is returned.  On error, -1 is returned,
       and errno is set appropriately.

       EPERM   The filesystem containing newpath does not support
               the creation of symbolic links.

       EFAULT  oldpath  or newpath points outside your accessible
               address space.

       EACCES  Write access to the directory  containing  newpath
               is not allowed for the process's effective uid, or
               one of the directories in newpath  did  not  allow
               search (execute) permission.

               oldpath or newpath was too long.

       ENOENT  A directory component in newpath does not exist or
               is a dangling symbolic link,  or  oldpath  is  the
               empty string.

       ENOTDIR A component used as a directory in newpath is not,
               in fact, a directory.

       ENOMEM  Insufficient kernel memory was available.

       EROFS   newpath is on a read-only filesystem.

       EEXIST  newpath already exists.

       ELOOP   Too  many  symbolic  links  were  encountered   in
               resolving newpath.

       ENOSPC  The device containing the file has no room for the
               new directory entry.

       EIO     An I/O error occurred.

       No checking of oldpath is done.

       Deleting the name referred to by a symlink  will  actually
       delete  the file (unless it also has other hard links). If
       this behaviour is not desired, use link.

       SVr4, SVID, POSIX, BSD  4.3.   SVr4  documents  additional
       error  codes  SVr4, SVID, BSD 4.3, X/OPEN.  SVr4 documents
       additional error codes EDQUOT and ENOSYS.  See open(2)  re
       multiple files with the same name, and NFS.

       readlink(2),   link(2),   unlink(2),  rename(2),  open(2),
       lstat(2), ln(1)

Linux 2.0.30              21 August 1997                        1