-n : 절단해서 생성되는 파일의 이름을 주기 위한 옵션. 이 옵션이 없는 경우는 default 로 절단 하는 파일의 이름을 사용-s : 생성되는 파일의 크기를 주기 위한 옵션. 이 옵션이 없는 경우 default 로 512KB 크기의 파일들이 생성i-o : 절단할 파일의 이름을 주기 위한 옵션 (반드시 포함되어야할 옵션)-d : 절단한 파일들을 현재 directory가 아닌 원하는 directory에 저장하고자 할 경우. directory가 없는 경우 생성하여 저장하도록 함. 절단된 파일의 위치는 default 가 실행 프로그램이 있는 directory
#include#include#include#include#include#include#define PERMS 0644#define BUFSIZE 512int dcheck =0; //합쳐질 파일을 삭제 or 합치는지 체크하는 함수.int add(char *name1, char *name2, char *makename,char *directory){int make;int cut1;int cut2;int buffer[BUFSIZE];int total1;int total2;ssize_t nread;make =open(makename,O_WRONLY|O_CREAT|O_APPEND,PERMS);//최종적으로 합쳐질 파일을 생성한다.chdir(directory);cut1=open(name1,O_RDONLY);// 첫번째 파일을 연다.while((nread=read(cut1,buffer,BUFSIZE))>0) //첫번째 파일 총 데이터의 길이를 읽는다.{total1+=nread;}read(cut1,buffer,total1); //첫번째 파일의 총 길이만큼 읽어드린다.write(make,buffer,total1); //첫번째 파일을 합쳐질 파일에 저장한다.cut2=open(name2,O_RDONLY);//두번째 파일을 연다.while((nread=read(cut2,buffer,BUFSIZE))>0)//두번째 파일 총 데이터의 길이를 읽는다..{total2+=nread;}read(cut2,buffer,total2); //두번째피일의 총길이만큼 읽어드린다.write(make,buffer,total2);//두번째 파일을 합쳐질 파일에 저장한다.if(dcheck==1){unlink(name1);//파일을 제거한다.unlink(name2);//파일을 제거한다.}return 0;}main(int argc, char *argv[]){int cnt =0;int i;int j;int option =0;int trans =0;int check=0;char *name1;char *name2;char *del1='