일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- transform
- 수학
- 상태
- 강화학습
- REM
- c
- 알고리즘
- stl
- float
- 포토샵
- spring
- Prefix Sums
- 소수
- pandas
- 미디어 쿼리
- react
- c++
- 백준
- skt membership
- 확률
- Javascript
- CSS
- 통신사할인
- SK바이오사이언스
- Photoshop
- Gap
- box-sizing
- 반응형 웹
- grid
- Codility
Archives
- Today
- Total
sliver__
[Manage Files] - mv / rename 함수 본문
728x90
[Moving Files]
- mv(1) 명령은 파일을 이동하기 위해 link(2) 및 unlink(2) 호출을 사용한다.
- 그러나 파일이 다른 파일 시스템으로 이동되면 mv(1) 명령이 파일을 복사해야 한다.
- 파일이 동일한 파일 시스템 내에서 이동되고 있다고 가정하면 예제 명령은 다음과 같다.
mv ./a.out ./bin/my_app
- C 코드로 작성하면 아래와 같다.
if ( link("./a.out","./bin/my_app") == -1 ) {
fprintf(stderr,"%s: link(2)\n",strerror(errno));
abort();
}
if ( unlink("./a.out") == -1 ) {
fprintf(stderr,"%s: unlink(2)\n",strerror(errno));
abort();
}
- 파일 이동의 기본 개념은 새 링크를 만든 다음 이전 링크를 제거하는 것이다.
- 이렇게 하면 파일을 한 경로에서 다른 경로로 이동하는 것처럼 보인다.
- 그러나 소스 및 대상 경로 이름이 다른 파일 시스템에 있는 경우 EXDEV 오류가 발생한다.
- EXDEV : 두 경로의 파일이 동일한 파일 시스템에 없을 경우 발생하는 에러이다.
- rename(2) 함수는 한 가지 오류만 테스트하면 되므로 코딩 작업이 줄어든다.
#include <stdio.h>
int rename(const char *from, const char *to);
- rename 함수는 성공하면 0 실패하면 -1을 반환하고 errno에 이유가 적힌다.
- to의 대상이 symbolic link일 경우 symbolic link의 이름이 변경된다.
- rename 함수는 경로 이름이 있는 경우 link를 해제한다.
728x90
'CS > UNIX' 카테고리의 다른 글
[Manage Files] - access 함수 (1) | 2022.10.19 |
---|---|
[Manage Files] - stat / fstat 함수 (1) | 2022.10.19 |
[Manage Files] - link 함수 (0) | 2022.10.18 |
[Manage Files] - unlink / remove 함수 (1) | 2022.10.18 |
[File locking] - Record Locking (0) | 2022.10.17 |
Comments