#include
    #include
    #include
    #include
    #include
    #define BUFFERSIZE 4096
    #define COPYMODE 0644
    void oops(char *, char *);
    int main(int ac, char *av[])
    {
      /* check args */
      if(ac != 3)
      {
        fprintf(stderr, "usage: %s source destination\n", *av);
        exit(1);
      }
     int in_fd_A, in_fd_B, n_chars;

     /* open files */
     if((in_fd_A = open(av[1], O_RDONLY)) == -1)
     oops("Cannot open ", av[1]);
     if((in_fd_B = open(av[2], O_RDONLY)) == -1)
     oops("Cannot open ", av[2]);

     /* compare files */
     int same = 1;
     char bufA[BUFFERSIZE] = {0};
     char bufB[BUFFERSIZE] = {0};
     while(1)
     {
       int readSizeA = read(in_fd_A, bufA, BUFFERSIZE);
       int readSizeB = read(in_fd_B, bufB, BUFFERSIZE);
       if(readSizeA == -1 || readSizeB == -1)
       {
         close(in_fd_A);
         close(in_fd_B);
         oops("read error ", "");
      }
      if(memcmp(bufA, bufB, BUFFERSIZE) != 0) // 두 버퍼가 같지 않으면
      {
        same = 0;
        break;
     }
     if(readSizeA == 0 || readSizeB == 0) // 파일을 끝까지 읽었다면
     break;
    }
    /* close files */
    if (close(in_fd_A) == -1 || close(in_fd_B) == -1)
    oops("Error closing files", "");

    if(same == 0)
    {
      while(( n_chars = read(in_fd_A, bufA, BUFFERSIZE)) > 0)
              if( write( in_fd_A, bufA, n_chars ) != n_chars )
               oops("Write error to ", av[2] );
    }
    else
    printf("두 파일의 내용은 같습니다.\n");
    }
    void oops(char *s1, char *s2)
    {
      fprintf(stderr, "Error: %s ", s1);
      perror(s2);
      exit(1);
    }



두 파일이 다르면 내용이 덮어씌워져야 하는데 그냥 여전히 다릅니당...

뭐가문제인가요??