티스토리 뷰

728x90

지난 포스팅에 이어서 빠르게 시스템 콜 예제 두 개를 더 보겠습니다!!

3. mycp 프로그램 작성

mycp 프로그램은 첫번째 인자로 지정된 파일을 두번째 인자로 지정한 파일로 복사하는 프로그램입니다. mycp source-file dest-file 명령어를 입력했을때 실행되도록 만들어봅시다. 이때, dest-file의 모드는 rw-rw-rw-로 세팅해야합니다. 사용자,그룹,외부인 모두 읽고 쓰는 것만 할 수 있는 모드입니다.

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <fcntl.h>
#include <errno.h>
#include <stdlib.h>

int main(int argc,char *argv[]){

    int fd_read,fd_write; 
    char buffer[BUF_SZ];

    if(argc != 3){
        printf("usage: mycp source-file dest-file\n");
        exit(0);
    }
    printf("first parameter: %s",argv[0]); 
    printf("second parameter: %s",argv[1]); 


    fd_read=open(argv[1],O_RDONLY);
    fd_write=open(argv[2],O_WRONLY|O_CREATE|O_TRUNC,0644);

    if(fd_read==-1||fd_write==-1){ //open error
        perror("first open: ");
        exit(0);
    }
    for(;;){
        int nb=read(fd_read,buffer,BUF_SZ);
        if(nb==0){
            break;
        }
        write(fd_write,buffer,BUF_SZ);	

    }
    close(fd_read);
    close(fd_write);
    return 0;
}

 

4. mytee 프로그램 작성

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <fcntl.h>
#include <unistd.h>

int main(int argc,char *argv[]){
    char buf[1000];
    int fd_read,fd_write;

    fd_write=open(argv[1],O_WRONLY|O_CREAT|O_TRUNC,0666);

    while (fd_read=read(0,buf,1000))
    {
        write(1,buf,fd_read);
        write(fd_write,buf,fd_read);
        
    }
    
    return 0;
}

 

이상 시스템 콜에 대해서 알아봤습니다! 감사합니다~

728x90
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/09   »
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
글 보관함