Manpages

이 름

rename − 파 일 의 이 름 이 나 위 치 를 변 경

사 용 법

#include <stdio.h>

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

설 명

rename 은 파 일 의 이 름 을 바 꾸 거 나 , 필 요 하 다 면 , 디 렉 토 리 간 에 파 일 을 이 동 시 킨 다 .

기 타 파 일 에 하 드 링 크 된 파 일 들 (.BR link (2))를 사 용 해 서 만 들 어 진 것 )은 영 향 을 받 지 않 는 다 . 만 일 newpath already exists it will be atomically replaced (subject to a few conditions - see ERRORS below), so that there is no point at which another process attempting to access newpath will find it missing. 가 이 미 존 재 한 다 면 , newpath는 자 동 적 으 로 대 체 될 것 이 다 . 따 라 서 .I newpath에 접 근 하 고 자 하 는 다 른 프 로 세 스 는 그 것 이 없 어 졌 다 는 것 을 발 견 할 점 이 없 다 .

만 일 .I newpath가 존 재 하 고 , 연 산 이 몇 가 지 이 유 때 문 에 실 패 한 다 면 , rename은 .I newpath의 예 를 적 절 한 곳 에 남 겨 둘 것 을 보 증 한 다 .

그 러 나 , 겹 쳐 쓰 기 할 때 , oldpath과 newpath 모 두 파 일 의 이 름 이 바 뀌 었 음 을 가 리 키 는 창 이 있 을 것 이 다 .

만 일 .I oldpath가 심 볼 릭 링 크 되 어 있 으 면 , 링 크 의 이 름 은 바 뀐 다 . 만 일 .I newpath가 심 볼 릭 링 크 되 어 있 으 면 , 링 크 는 겹 쳐 쓰 기 된 다 .

반 환 값

성 공 하 면 , zero가 리 턴 되 고 , 에 러 가 발 생 하 면 , −1가 리 턴 되 며 , errno가 적 절 하 게 설 정 된 다 .

에 러

EISDIR

newpath는 기 존 디 렉 토 리 이 지 만 , oldpath는 디 렉 토 리 가 아 니 다 .

EXDEV

oldpathnewpath 는 동 일 한 파 일 시 스 템 상 에 있 지 않 는 다 .

ENOTEMPTY or EEXIST

newpath 는 빈 디 렉 토 리 가 아 니 다 . 예 를 들 어 .와 .. 이 상 의 내 용 들 을 갖 고 있 다 .

EBUSY

oldpath또 는 newpath가 일 부 프 로 세 스 (현 행 작 업 디 렉 토 리 ,루 트 디 렉 토 리 ,또 는 읽 기 를 위 해 열 린 경 우 로 서 )에 의 해 사 용 되 는 디 렉 토 리 이 거 나 , 시 스 템 (마 운 트 포 인 트 )에 의 해 사 용 되 는 디 렉 토 리 이 기 때 문 에 , rename은 실 패 한 다 . 반 면 에 시 스 템 은 이 를 에 러 로 간 주 한 다 .

(이 런 경 우 EBUSY를 리 턴 할 필 요 가 없 다 는 것 을 참 고 하 라 . rename을 실 행 하 는 데 있 어 잘 못 된 점 은 하 나 도 없 다 . 하 지 만 , 만 일 시 스 템 이 이 러 한 상 황 들 을 제 어 하 지 못 한 다 면 , EBUSY의 리 턴 이 허 용 된 다 .)

EINVAL

새 로 운 경 로 명 은 경 로 오 래 된 경 로 명 의 접 두 사 를 포 함 하 거 나 , 그 자 체 의 디 렉 토 리 를 그 자 체 의 하 위 디 렉 토 리 로 만 들 려 는 시 도 가 이 루 어 진 다 .

EMLINK

oldpath 는 이 미 최 대 그 에 대 한 최 대 숫 자 의 링 크 들 을 갖 고 있 거 나 , newpath를 포 함 하 는 디 렉 토 리 는 최 대 숫 자 의 링 크 들 을 갖 고 있 다 .

ENOTDIR

oldpath또 는 newpath에 서 디 렉 로 리 로 서 사 용 되 는 구 성 요 소 는 사 실 상 디 렉 토 리 가 아 니 다 .

Or, oldpath 는 디 렉 토 리 이 고 , newpath 는 존 재 하 지 만 , 디 렉 토 리 가 아 니 다 .

EFAULT

oldpath또 는 newpath는 여 러 분 의 액 세 스 가 가 능 한 주 소 공 간 의 밖 을 가 리 킨 다 .

EACCES

oldpath또 는 newpath를 포 함 하 는 디 렉 토 리 에 대 한 쓰 기 접 근 은 프 로 세 스 의 유 효 UID에 대 해 허 용 되 지 않 거 나 , .IR oldpath 또 는 newpath내 의 디 렉 토 리 들 중 하 나 가 검 색 (실 행 ) 권 한 을 허 용 하 지 않 거 나 , .I oldpath가 디 렉 토 리 이 면 서 쓰 기 권 한 (.B .. 항 목 을 업 데 이 트 할 필 요 가 있 다 )을 허 용 하 지 않 는 다 .

EPERM또 는 EACCES

oldpath를 포 함 하 는 디 렉 토 리 는 스 티 키 비 트 를 설 정 되 도 록 하 고 , 프 로 세 스 의 유 효 UID는 루 트 의 UID도 , 삭 제 될 파 일 의 UID도 , 이 를 포 함 하 는 디 렉 토 리 의 UID도 아 니 거 나 , newpath는 존 재 하 는 파 일 이 다 . 그 리 고 이 를 포 함 하 는 디 렉 토 리 는 스 티 키 비 트 가 설 정 되 도 록 하 고 , 프 로 세 스 의 유 효 UID는 루 트 의 UID도 , 대 체 될 파 일 의 UID도 , 이 를 포 함 하 는 디 렉 토 리 의 UID도 아 니 다 . 또 는 .IR pathname를 포 함 하 는 파 일 시 스 템 은 요 청 된 타 입 의 이 름 바 꾸 기 (rename)를 지 원 하 지 않 는 다 .

ENAMETOOLONG

oldpath또 는 newpath가 너 무 길 다 .

ENOENT

oldpath 또 는 newpath내 의 디 렉 토 리 구 성 요 소 가 존 재 하 지 않 거 나 , 심 볼 릭 링 크 이 다 .

ENOMEM

사 용 할 수 있 는 커 널 메 모 리 가 충 분 하 지 않 다 .

EROFS

파 일 은 오 직 읽 기 가 가 능 한 파 일 시 스 템 상 에 있 다 .

ELOOP

oldpath또 는 newpath을 결 정 하 는 데 있 어 ,너 무 나 많 은 심 볼 릭 링 크 들 과 마 주 치 게 된 다 .

ENOSPC

파 일 을 포 함 하 는 장 치 는 새 로 운 디 렉 토 리 항 목 에 대 한 여 유 가 없 다 .

호 환

POSIX, 4.3BSD, ANSI C

버 그

NFS 파 일 시 스 템 에 서 , 여 러 분 은 연 산 이 실 패 하 면 , 파 일 의 이 름 바 꾸 기 가 안 된 다 는 가 정 을 해 서 는 안 된 다 . 만 일 서 버 가 연 산 을 rename하 고 , 붕 괴 되 면 , 서 버 가 다 시 되 살 아 난 이 후 에 처 리 될 다 시 전 송 된 RPC는 실 패 하 게 된 다 . 어 플 리 케 이 션 은 이 를 다 루 도 록 되 어 있 다 . 이 와 비 슷 한 문 제 에 대 해 서 는 .BR linux(2)를 참 조 하 라 .

관 련 항 목

link(2), unlink(2), symlink(2), mv(1)

역 자

ASPLINUX<man [AT] asp-linux.kr>, 2000년 7월 26