[UNIX 시스템 프로그래밍 second Edition - KEITH HAVILAND저] 연습문제 풀이입니다.


(저작권에 저촉 될 우려가 있어 문제 내용은 생략합니다.)


연습문제 3.8 입니다.

이번 문제의 경우 사용자가 unlink를 사용하며 파일을 제거하는 프로그램을 작성하는 것이 목표입니다.

먼저 사용자가 파에 쓰기 권한을 가졌는지 확인하기 위해 access 함수를 이용하였습니다.

이후 쓰기 권한을 가졌다면 unlink 함수를 이용하여 파일을 삭제하였습니다.


코드는 C++로 작성하였습니다.

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
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
 
int main(int argc, char *argv[]) {
    int check = 0;    
    if (argc !=2) {
        fprintf(stderr, "delete only one file\n");
        exit(1);    
    }
    if(access (argv[1], W_OK) == -1) {
        perror("cannot write");
        printf("\tyou don't have write permission.\n\tDo you want really delete file?\n\tif you want, input 1 : ");
        scanf("%d",&check);
        if(check == 1)
            printf("OK. delete file\n");
        else {
            printf("file delete cancel\n");
            exit(0);    
        }
    }
    if(unlink(argv[1]) == -1) {
        perror("unlink failed");
        exit(1);    
    }
    
    printf("Succeeded\n");
    exit(0);
}