함수 기능
remove
파일이나 디렉토리를 unlink하는 시스템 호출, root권한 없는 unlink
rename
파일 이름을 변경 할 때 호출하는 시스템 호출
함수 원형
#include <stdio.h>
int remove(const char *filepath);
int rename(const char *oldname const char *newname);
리턴 값 : 성공시 0 에러 시 -1
함수 파라메터
filepath
파일의 경로
oldname
바뀌기전 구 이름
newname
바꿀 새로운 이름
함수 예제
remove
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
int main(int argc, char *argv[]){
if(argc !=3){
fprintf(stderr,"usage : %s<oldname><newname>\n",argv[0]);
exit(1);
}
if(link(argv[1],argv[2])<0){
fprintf(stderr,"link error\n");
exit(1);
}
else
printf("step1 passed.\n");
if(remove(argv[1])<0){
fprintf(stderr, "remove error\n");
remove(argv[2]);
exit(1);
}
else
printf("ste2 passed.\n");
printf("Success!\n");
exit(0);
}
rename
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<fcntl.h>
int main(int argc, char *argv[]){
int fd;
if(argc !=3){
fprintf(stderr,"usage : %s<oldname><newname>\n",argv[0]);
exit(1);
}
if((fd=open(argv[1],O_RDONLY))<0){
fprintf(stderr, "first open error for %s\n",argv[1]);
exit(1);
}
else
close(fd);
if(rename(argv[1],argv[2])<0){
fprintf(stderr,"rename error\n");
exit(1);
}
if((fd=open(argv[1],O_RDONLY))<0){
printf("second open error for%s\n",argv[1]);
}
else{
fprintf(stderr,"it's very strange!\n");
exit(1);
}
if((fd=open(argv[2],O_RDONLY))<0){
fprintf(stderr,"third open error for%s\n",argv[2]);
exit(1);
}
printf("Everything is good!\n");
}
함수 결과
remove
rename
리눅스시스템 프로그래밍 - 홍지만 저
교재 내에 있는 예제를 바탕으로 작성한 글 입니다.
'C & LINUX' 카테고리의 다른 글
C / LINUX mkdir(2) rmdir(2) (0) | 2022.05.02 |
---|---|
C / LINUX symlink() readlink() (0) | 2022.05.02 |
C / LINUX putenv(3) (0) | 2022.05.02 |
C / LINUX link() unlink() (0) | 2022.05.02 |
C / LINUX chown() fchown() lchown() (0) | 2022.05.02 |