반응형
symlink(2)
#include <unistd.h>
int symlink(const char *oldpath, const char *newpath);
oldpath에 대해 새로운 symbolic link(또는 soft link)를 생성합니다. oldpath는 존재하지 않아도 됩니다. 존재하지 않는 oldpath에 대한 symbolic link를 dangling link라고 합니다. symbolic link는 hard link와 달리 orginal file(oldpath)를 알 수 있습니다. readlink(2) 참고. symbolic link는 자신은 데이터를 저장 공간을 갖지 않습니다. C언어의 pointer와 비슷한 형태입니다.
파라미터
oldpath
- 존재하는 파일이거나 존재하지 않지만 향후에 생성될 파일에 대한 path입니다.
(물론 영원히 생성 안될 수도 있겠지만...)
newpath
- 새로 생성할 symbolic link 파일명.
- 이미 존재하는 파일이면 overwrite되지 않고 오류가 발생합니다.
RETURN
0
- 정상적으로 symbolic link가 생성되었습니다.
-1
- 오류가 발생하였으며, 상세한 오류는 errno 전역변수에 설정됩니다.
EACCES : newpath를 생성할 디렉토리에 권한이 없거나, oldpath 또는 newpath에 search 권한이 없음.
EDQUOT : user에 할당된 disk block이 다 소모되었습니다.
EEXIST : newpath가 이미 존재합니다.
EFAULT : oldpath 또는 newpath 변수의 데이터 버퍼가 접근가능한 메모리 영역이 아닙니다.
EIO : I/O error가 발생하였습니다.
ELOOP : newpath가 symbolic links가 depth가 깊어서 처리 못합니다.
ENAMETOOLONG : oldpath 또는 newpath의 문자열이 너무 깁니다.
ENOENT : newpath가 디렉토리 구성에 없는 디렉토리를 가지고 있거나, dangling link를 가지고 있는 경우,
또는 oldpath가 비어있을 경우
ENOMEM : kernel memory가 부족합니다.
ENOSPC : 파일을 가지고 있는 device의 새로운 디렉토리 entry를 저장할 공간이 없습니다.
ENOTDIR: newpath의 구성하고 있는 디렉토리며에 디렉토리가 아닌 것이 있습니다.
EPERM : newpath를 포함하는 file system이 symbolic link를 지원하지 않습니다.
EROFS : read-only file system입니다.
see also :
반응형
'C언어 header > unistd.h' 카테고리의 다른 글
truncate(2) - 파일의 크기를 조정하기 (0) | 2019.10.01 |
---|---|
sync(2) - 전체 kernel buffer를 동기화 하기 (0) | 2019.10.01 |
stat(2) - 파일의 상태 및 정보를 얻는 함수 (0) | 2019.10.01 |
sleep(3) - 설정된 초(second) 동안 대기 (0) | 2019.10.01 |
readlink(2) - symbolic link 값을 읽는 함수 (0) | 2019.10.01 |