RENAME(2)

명칭
rename - 파일명을 변경한다

프로그램 라이브러리
libc

서식
<stdio.h> int rename(const char *from, const char *to)

해설
rename() 에 의해 from (와)과 이름 붙여진 링크를 to (으)로 변경합니다. to 하지만 벌써 존재하는 경우는, 먼저 이것을 삭제합니다. from (와)과 to (은)는 같은 타입이 아니면 안되어 (양쪽 모두 디렉토리인지, 양쪽 모두 디렉토리가 아닌지), 같은 파일 시스템상에 존재하고 있을 필요가 있습니다.

to 하지만 이미 존재하는 경우에는, 조작의 도중에 시스템이 크래쉬 했다고 해도, rename() 하 to 의 인스턴스가 반드시 존재하는 것을 프로텍션합니다.

from 의 마지막 원가요소가 기호 연결의 경우, 그것이 가리키고 있다 파일 또는 디렉토리가 아니고, 그 기호 연결의 이름이 변경됩니다.

반환값

에러
rename() (은)는 다음의 경우에 실패해, 어느 인수 파일도 영향을 받지 않습니다.

[ENAMETOOLONG]
    몇개의 패스명의 원가요소가 255 캐릭터를 넘고 있는지, 또는 몇개의 패스명 전체의 길이가 1023 캐릭터를 넘고 있습니다.

[ENOENT]
    from 패스의 원가요소가 존재하지 않는지, 또는 to 의 전치패스명이 존재하지 않습니다.

[EACCES]
    지정된 패스에는, 검색이 허가되어 있지 않은 디렉토리가 포함되어 있습니다.

[EACCES]
    지정된 링크는, 기록이 허가되어 있지 않다 디렉토리에의 기록을 요구하고 있습니다.

[EPERM]
    from 파일을 포함한 디렉토리에 스티키빗트가 설정되어 있어 그 디렉토리와 from 의 어느 쪽의 소유자도 실효 유저 ID 와는 다릅니다.

[EPERM]
    to 파일이 존재해, 한편 to (을)를 포함하고 있는 디렉토리에 스티키빗트가 설정되어 있어 그 디렉토리와 to 파일의 어느 쪽의 소유자도 실효 유저 ID 와는 다릅니다.

[ELOOP]
    패스명을 변환할 경우에 검출된 기호 연결이 너무 많습니다.

[ENOTDIR]
    패스의 원가요소중에 디렉토리 이외의 것이 포함되어 있습니다.

[ENOTDIR]
    from (은)는 디렉토리입니다만, to (은)는 디렉토리가 아닙니다.

[EISDIR]
    to (은)는 디렉토리입니다만, from (은)는 디렉토리가 아닙니다.

[EXDEV]
    to 에 의해 지정된 링크, 및 from 에 의해 지정된 파일이 다른 논리 디바이스 (파일 시스템) 상에 있습니다. 실장이 크로스 디바이스 링크를 허용 하는 경우, 이 에러 코드는 돌아가지 않는 것에 주의해 주세요.

[ENOSPC]
    디렉토리를 격납하고 있는 파일 시스템 건성간이 고갈했기 때문에, 새로운 이름을 위한 엔트리를 두는 디렉토리를 확장할 수 없습니다.

[EDQUOT]
    디렉토리를 격납하고 있는 파일 시스템상의 디스크 블록의 유저의 쿼터가 고갈했기 때문에, 새로운 이름을 위한 엔트리를 두는 디렉토리를 확장할 수 없습니다.

[EIO]
    디렉토리 엔트리를 작성 또는 갱신하고 있는 동안에 입출력 에러가 발생했습니다.

[EROFS]
    지정된 링크는, 읽기 전용 파일 시스템상의 디렉토리에의 기록을 요구하고 있습니다.

[EFAULT]
    path (은)는, 프로세스에 할당할 수 있었던 address 공간의 범위외를 가리키고 있습니다.

[EINVAL]
    from 하지만 to 의 친디렉토리인지, ‘.’ 또는 ‘..’ (으)로 이름을 변경하려고 했습니다.

[ENOTEMPTY]
    to (은)는 디렉토리이며, 하늘이 아닙니다.

관련 항목
open(2), symlink(7)

표준
rename() 함수는 p1003.1-96 에 준거하고 있습니다.