linux系統程式設計CP小測試

丆哭丆鬧丆衒耀發表於2020-12-31

CP小測試

目的:把原始檔copy到目標檔案中。
思路:
1.開啟原始檔(src.c)
2.把原始檔內容讀取到快取區中
3.開啟目標檔案(des.c)(沒有就建立)
4.將快取區裡的內容寫到目標檔案裡
5.最後關閉兩個檔案
實現程式碼:

  1 #include <stdio.h>
  2 #include <sys/types.h>
  3 #include <sys/stat.h>
  4 #include <fcntl.h>
  5 #include <stdlib.h>
  6 #include <unistd.h>
  7 
  8 int main(int argc, char **argv)
  9 {
 10         int fdSrc;
 11         int fdDest;
 12 
 13         if(argc != 3)
 14         {
 15                 printf("parameter error\n");
 16                 exit(-1);
 17         }
 18 
 19         fdSrc = open(argv[1], O_RDWR, 0600);//開啟原始檔
 20         if(fdSrc == -1)
 21         {
 22                 printf("open error\n");
 23                 exit(-1);
 24         }
 25 
 26         int size = lseek(fdSrc, 0, SEEK_END);//移動游標計算檔案大小
 27 
 28         lseek(fdSrc, 0, SEEK_SET);//讓原始檔游標回到開頭
 29 
 30         char *readBuf = (char *)malloc(sizeof(char)*size);//開闢這麼大的快取區
 31 
 32         int n_read = read(fdSrc, readBuf, size);//從原始檔讀取檔案到快取區
 33         if(n_read == -1)
 34         {
 35                 printf("read source file failed\n");
 36                 exit(-1);
 37         }
 38 
 39         printf("read %d byte\n", n_read);
 40 
 41         lseek(fdSrc, 0, SEEK_SET);//讓快取區的游標回到開頭
 42 
 43         fdDest = open(argv[2], O_RDWR|O_CREAT|O_TRUNC, 0600);//開啟或者建立或者幹掉目標檔案裡的內容
 44         if(fdDest == -1)
 45         {
 46                 printf("open object file failed\n");
 47                 exit(-1);
 48         }
 49 
 50         int n_write = write(fdDest, readBuf, n_read);//從快取區寫資料到目標檔案
 51         if(n_write == -1)
 52         {
 53                 printf("write byte error\n");
 54         }
 55         printf("write %d byte\n", n_write);
 56
 57 		close(fdSrc);
 58			close(fdDest);
 59         return 0;
 60 }

相關文章