Scroll to navigation

SYMLINK(2) 리눅스 프로그래머 매뉴얼 SYMLINK(2)

이름

symlink - 파일에 새로운 이름을 만든다.

사용법

#include <unistd.h>

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

설명

symlinkoldpath를 포함하는 newpath 라는 이름의 상징 연결을 만든다.

상징 연결은 마치 연결의 내용들이 파일이나 디렉토리를 찾기위해 따라가는 경로로 바뀐것처럼 run-time시에 해석된다.

상징 연결은 연결이 있는 곳의 상위 디렉토리를 가리키는(만일 연결의 시작에서 사용된다면) .. 경로 요소들을 포함할수 있다.

상징 연결(또한 소프트 연결이라 불려진다)은 존재하는 파일이나 존재하지 않는 파일을 가리킬수 있다; 나중의 경우는 dangleing 연결로 알려져 있다.

상징 연결의 허가권들은 관련이 없다; 소유자는 연결을 따라갈때 무시되며 연결에 대한 제거나 새이름을 요구할때와 연결이 sticky-bit가 설정되어 있는 디렉토리에 있을때는 검사된다.

만일 newpath 가 존재한다면 그것은 덮어 쓰여지지 않는다.

반환값

성공시, 0이 리턴된다. 에러시 -1이 리턴되며 errno 는 적당한 값으로 설정된다.

에러

newpath를 포함하는 파일 시스템은 상징 연결을 만드는걸 지원하지 않는다.
oldpath 또는 newpath가 접근할수 있는 주소 공간외를 가리키고 있다.
newpath 를 포함하는 디렉토리에 대한 쓰기 접근이 프로세스의 유효 uid에 허가되지 않았거나 newpath에 있는 디렉토리중 하나가 탐색(실행) 허가권을 허용하지 않는다.
oldpath 또는 newpath 가 너무 길다.
newpath 에 있는 디렉토리 요소가 존재하지 않거나 dangling 상징 연결이거나 oldpath 가 빈 문자열 이다.
newpath에서 디렉토리로써 사용된 요소가 사실은 디렉토리가 아니다.
이용할수 있는 커널 메모리가 충분하지 않다.
newpath 가 읽기-전용 파일 시스템이다.
newpath 가 이미 존재한다.
너무 많은 상징 연결들을 newpath번역시에 만났다.
파일을 포함하는 장치가 새로운 디렉토리를 위한 공간을 가지고 있지 않다.
I/O 에러가 발생했다.

주의

oldpath 에 대한 어떤 검사도 하지 않았다.

상징에 의해 참조되는 이름을 지우는것은 실제로 파일(만일 이것이 다른 하드 연결들을 가지고 있지 않다면)을 지우는 것이다. 만일 이러한 행동을 원하지 않는다면, link를 사용해라.

호환

SVr4, SVID, POSIX, BSD 4.3. SVr4 는 SVr4, SVID, BSD 4.3, X/OPEN 를 위한 에러코드를 문서화 했다. SVr4 는 EDQUOT 그리고 ENOSYS 에러코드들을 추가적으로 문서화 했다. 같은 이름을 가지고 있는 다중 파일들 그리고 NFS 를 위해 open(2) 참조해라.

관련 항목

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

역자

정강훈 <skyeyes@soback.kornet.net>, 2000년 8월 5일

1997년 8월 21일 Linux 2.0.30