Advertisement
dimon2242

Exam

Jul 2nd, 2018
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.89 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <unistd.h>
  4. #include <sys/types.h>
  5. #include <sys/wait.h>
  6. #include <fcntl.h>
  7.  
  8. #define PERMS 0666
  9.  
  10. int main() {
  11.     int fd_source, fd_target;
  12.     char buffer[4096];
  13.     char filename_source[] = "src";
  14.     char filename_target[] = "dst";
  15.     ssize_t cread, cwrite;
  16.     char *out_ptr = buffer;
  17.     pid_t pid1 = fork();
  18.     if(!pid1) {
  19.         if((fd_source = open(filename_source, O_RDONLY)) < 0) {
  20.             perror("open source file error");
  21.         }
  22.         if((fd_target = open(filename_target, O_CREAT | O_WRONLY, PERMS)) < 0 ) {
  23.             perror("open target file error");
  24.         }
  25.         while((cread = read(fd_source, buffer, sizeof buffer)) > 0) {
  26.             do {
  27.                 if((cwrite = write(fd_target, out_ptr, cread)) >= 0) {
  28.                     cread -= cwrite;
  29.                     out_ptr += cwrite;
  30.                 } else {
  31.                     break;
  32.                 }
  33.             } while(cread > 0);
  34.         }
  35.         close(fd_source);
  36.         close(fd_target);
  37.         exit(0);
  38.     }
  39.     wait(NULL);
  40. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement