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 :

    File 속성 정보 및 파일 관리 Library

    Directory 정보 조회 및 관리 Library

    System Call File I/O Library

    Stream File I/O Library

 

블로그 이미지

사용자 자연&사람

행복한 개발자 programmer since 1995.

댓글을 달아 주세요