Ocean_
꾸준한 프로그래밍
Ocean_
전체 방문자
오늘
어제
  • 분류 전체보기 (174)
    • About Me (4)
    • 우아한테크코스 (27)
    • C & LINUX (50)
    • Operating System (12)
    • Database (25)
    • Computer Vision (0)
    • Problem Solving (0)
      • Programmers (0)
      • BOJ (0)
    • 코코코딩공부 (44)
      • Spring (12)
      • JAVA (14)
      • 디자인 패턴 (4)
      • 책 읽기 (4)

블로그 메뉴

  • 홈
  • 방명록

공지사항

인기 글

태그

  • 트랜잭션
  • 프로세스
  • Operating System
  • 우테코 체스
  • DB
  • 인덱스
  • signal
  • BOJ
  • 자바
  • C
  • 정규화
  • SIGINT
  • OS
  • 리눅스
  • 우아한테크코스5기
  • 블랙잭
  • 우아한테크코스
  • C++
  • 1259
  • 데이터 조작어
  • bean
  • 운영체제
  • OperatingSystem
  • 우테코5기
  • 우테코
  • 백준
  • Linux
  • Spring
  • 원시값 포장
  • 우아한형제들

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Ocean_

꾸준한 프로그래밍

C / LINUX link() unlink()
C & LINUX

C / LINUX link() unlink()

2022. 5. 2. 15:22

함수 기능

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
    'C & LINUX' 카테고리의 다른 글
    • C / LINUX remove(3) rename(2)
    • C / LINUX putenv(3)
    • C / LINUX chown() fchown() lchown()
    • C / LINUX chmod(2) fchmod(2)
    Ocean_
    Ocean_
    dongVeloper

    티스토리툴바