X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=original%2Fman2%2Fsymlink.2;h=470dbec90996e76acd57c14b49bded750a2ce9ef;hb=110dba020f489b75aff2497105f7970c05e2b87c;hp=ffebf1447f30efc2d503446ed3dbad05d281ee9a;hpb=bf11c0c4717abfd30785b3991b933f4687bb24fc;p=linuxjm%2FLDP_man-pages.git diff --git a/original/man2/symlink.2 b/original/man2/symlink.2 index ffebf144..470dbec9 100644 --- a/original/man2/symlink.2 +++ b/original/man2/symlink.2 @@ -1,5 +1,6 @@ .\" This manpage is Copyright (C) 1992 Drew Eckhardt; .\" and Copyright (C) 1993 Michael Haardt, Ian Jackson. +.\" and Copyright (C) 2006, 2014 Michael Kerrisk .\" .\" %%%LICENSE_START(VERBATIM) .\" Permission is granted to make and distribute verbatim copies of this @@ -29,14 +30,22 @@ .\" Modified 1997-01-31 by Eric S. Raymond .\" Modified 2004-06-23 by Michael Kerrisk .\" -.TH SYMLINK 2 2013-01-27 "Linux" "Linux Programmer's Manual" +.TH SYMLINK 2 2014-05-05 "Linux" "Linux Programmer's Manual" .SH NAME -symlink \- make a new name for a file +symlink, symlinkat \- make a new name for a file .SH SYNOPSIS +.nf .B #include .sp -.BI "int symlink(const char *" oldpath ", const char *" newpath ); +.BI "int symlink(const char *" target ", const char *" linkpath ); .sp +.BR "#include " "/* Definition of AT_* constants */" +.B #include +.sp +.BI "int symlinkat(const char *" target ", int " newdirfd \ +", const char *" linkpath ); +.sp +.fi .in -4n Feature Test Macro Requirements for glibc (see .BR feature_test_macros (7)): @@ -48,13 +57,26 @@ Feature Test Macro Requirements for glibc (see _BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED || _POSIX_C_SOURCE\ >=\ 200112L .RE +.sp +.BR symlinkat (): +.PD 0 +.ad l +.RS 4 +.TP 4 +Since glibc 2.10: +_XOPEN_SOURCE\ >=\ 700 || _POSIX_C_SOURCE\ >=\ 200809L +.TP +Before glibc 2.10: +_ATFILE_SOURCE +.RE .ad b +.PD .SH DESCRIPTION .BR symlink () creates a symbolic link named -.I newpath +.I linkpath which contains the string -.IR oldpath . +.IR target . Symbolic links are interpreted at run time as if the contents of the link had been substituted into the path being followed to find a file or @@ -77,10 +99,44 @@ the sticky bit set. If -.I newpath -exists it will +.I linkpath +exists, it will .I not be overwritten. +.SS symlinkat() +The +.BR symlinkat () +system call operates in exactly the same way as +.BR symlink (), +except for the differences described here. + +If the pathname given in +.I linkpath +is relative, then it is interpreted relative to the directory +referred to by the file descriptor +.I newdirfd +(rather than relative to the current working directory of +the calling process, as is done by +.BR symlink () +for a relative pathname). + +If +.I linkpath +is relative and +.I newdirfd +is the special value +.BR AT_FDCWD , +then +.I linkpath +is interpreted relative to the current working +directory of the calling process (like +.BR symlink ()). + +If +.I linkpath +is absolute, then +.I newdirfd +is ignored. .SH RETURN VALUE On success, zero is returned. On error, \-1 is returned, and @@ -90,9 +146,9 @@ is set appropriately. .TP .B EACCES Write access to the directory containing -.I newpath +.I linkpath is denied, or one of the directories in the path prefix of -.I newpath +.I linkpath did not allow search permission. (See also .BR path_resolution (7).) @@ -103,27 +159,27 @@ The resources could be inodes or disk blocks, depending on the filesystem implementation. .TP .B EEXIST -.I newpath +.I linkpath already exists. .TP .B EFAULT -.IR oldpath " or " newpath " points outside your accessible address space." +.IR target " or " linkpath " points outside your accessible address space." .TP .B EIO An I/O error occurred. .TP .B ELOOP Too many symbolic links were encountered in resolving -.IR newpath . +.IR linkpath . .TP .B ENAMETOOLONG -.IR oldpath " or " newpath " was too long." +.IR target " or " linkpath " was too long." .TP .B ENOENT A directory component in -.I newpath +.I linkpath does not exist or is a dangling symbolic link, or -.I oldpath +.I target is the empty string. .TP .B ENOMEM @@ -135,29 +191,56 @@ entry. .TP .B ENOTDIR A component used as a directory in -.I newpath +.I linkpath is not, in fact, a directory. .TP .B EPERM The filesystem containing -.I newpath +.I linkpath does not support the creation of symbolic links. .TP .B EROFS -.I newpath +.I linkpath is on a read-only filesystem. +.PP +The following additional errors can occur for +.BR symlinkat (): +.TP +.B EBADF +.I newdirfd +is not a valid file descriptor. +.TP +.B ENOENT +.I linkpath +is a relative pathname and +.IR newdirfd +refers to a directory that has been deleted. +.TP +.B ENOTDIR +.I linkpath +is relative and +.I newdirfd +is a file descriptor referring to a file other than a directory. +.SH VERSIONS +.BR symlinkat () +was added to Linux in kernel 2.6.16; +library support was added to glibc in version 2.4. .SH CONFORMING TO -SVr4, 4.3BSD, POSIX.1-2001. +.BR symlink (): +SVr4, 4.3BSD, POSIX.1-2001, POSIX.1-2008. .\" SVr4 documents additional error codes EDQUOT and ENOSYS. .\" See .\" .BR open (2) .\" re multiple files with the same name, and NFS. + +.BR symlinkat (): +POSIX.1-2008. .SH NOTES No checking of -.I oldpath +.I target is done. -Deleting the name referred to by a symlink will actually delete the +Deleting the name referred to by a symbolic link will actually delete the file (unless it also has other hard links). If this behavior is not desired, use .BR link (2). @@ -169,7 +252,15 @@ If this behavior is not desired, use .BR open (2), .BR readlink (2), .BR rename (2), -.BR symlinkat (2), .BR unlink (2), .BR path_resolution (7), .BR symlink (7) +.SH COLOPHON +This page is part of release 3.68 of the Linux +.I man-pages +project. +A description of the project, +information about reporting bugs, +and the latest version of this page, +can be found at +\%http://www.kernel.org/doc/man\-pages/.