함수 기능
link
기존 파일에 대한 링크를 생성하는 시스템호출 하드링크
unlink
기존 디렉토리 항목의 링크를 제거하는 시스템호출
함수 원형
#include <unistd.h>
int link(const char *existingpath, const char *newpath);
int unlink(const char *filepath);
리턴 값 : 성공 시 0 에러시 -1
함수 파라메터
existingpath
현존하는 경로
newpath
새롭게 만들 경로
filepath
파일경로
함수 예제
link
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
int main(int argc, char *argv[]){
if(argv<3){
fprintf(stderr, "usage: %s<fil1><file2>\n",argv[0]);
exit(1);
}
if(link(argv[1],argv[2])==-1){
fprintf(stderr,"link error for %s\n",argv[1]);
exit(1);
}
exit(0);
}
unlink
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
int main(void){
char *fname ="ssu_dump.txt";
if(open(fname,O_RDWR)<0){
fprintf(stderr,"open error for%s\n",fname);
exit(1);
}
if(unlink(fname)<0){
fprintf(stderr,"unlink error for %s\n",fname);
exit(1);
}
printf("File unlinked\n");
sleep(20);
printf("Done\n");
exit(0);
}
unlink2
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
int main(void){
char buf[64];
char *fname = "ssu_tempfile";
int fd;
int length;
if((fd=open(fname,O_RDWR | O_CREAT | O_TRUNC, 0600))<0){
fprintf(stderr, "first open error for %s\n",fname);
exit(1);
}
if(unlink(fname)<0){
fprintf(stderr, "unlink error for %s\n",fname);
exit(1);
}
if(write(fd,"How are you?",12)!=12){
fprintf(stderr,"write error\n");
exit(1);
}
lseek(fd,0,0);
if((length=read(fd,buf,sizeof(buf)))<0){
fprintf(stderr,"buf read error\n");
exit(1);
}
else
buf[length]=0;
printf("%s\n",buf);
close(fd);
if((fd=open(fname,O_RDWR))<0){
fprintf(stderr,"second open error for %s\n",fname);
exit(1);
}
else
close(fd);
exit(0);
}
함수 결과
link
unlink
unlink2
리눅스시스템 프로그래밍 - 홍지만 저
교재 내에 있는 예제를 바탕으로 작성한 글 입니다.
'C & LINUX' 카테고리의 다른 글
C / LINUX remove(3) rename(2) (0) | 2022.05.02 |
---|---|
C / LINUX putenv(3) (0) | 2022.05.02 |
C / LINUX chown() fchown() lchown() (0) | 2022.05.02 |
C / LINUX chmod(2) fchmod(2) (0) | 2022.05.02 |
C / LINUX umask() (0) | 2022.05.02 |