본문 바로가기

Programming

[Linux] system call을 이용한 파일 복사 (UNIX)

728x90
반응형

UNIX에서 system call을 이용한 파일 복사



#include <sys/types.h>

#include <sys/stat.h>

#include <fcntl.h>

#include <stdio.h>


#define MAX_SIZE 1024


int main(void)

{

        char buf[MAX_SIZE] = {0,};

        char input_Name[MAX_SIZE] = {0,};

        char output_Name[MAX_SIZE] = {0,};

        int input_File, output_File;

        int testnum;


        write(1,"Input file name : ",sizeof("Input file name : "));

        testnum = read(1,input_Name,sizeof(input_Name));

        if(testnum < 0)

        {

                write(1,"Input error!!",sizeof("Input error!!"));

                exit(1);

        }

        else

        {

                input_Name[testnum-1] = '\0';

        }


        write(1,"Output file name : ",sizeof("Output file name : "));

        testnum = read(1,output_Name,sizeof(output_Name));

        if(testnum < 0)

        {

                write(1,"Output error!!",sizeof("Input error!!"));

                exit(1);

        }

        else

        {

                output_Name[testnum-1] = '\0';

        }


        input_File = open(input_Name , O_RDONLY);

        if(input_File == -1)

        {

                write(1,"Input file open error!!\n", sizeof("Input file open error!!"));

                exit(1);

        }


        output_File = open(output_Name ,O_EXCL | O_WRONLY | O_CREAT,0644);

        if(input_File == -1)

        {

                write(1,"Output file open error!!\n", sizeof("Output file open error!!"));

                exit(1);

        }


        while( read(input_File, buf, sizeof(buf)) )

        {

                write(output_File, buf, sizeof(buf));

        }


        close(output_File);

        close(input_File);

        return 0;

}


반응형