cp命令的基本用法: cp 源文件 目標文件 如果目標文件不存在 就創建, 如果存在就覆蓋 實現一個cp命令其實就是讀寫文件的操作: 對於源文件: 把內容全部讀取到緩存中,用到的函數read 對於目標文件: 把緩存中的內容全部寫入到目標文件,用到的函數creat 1 /* 2 * Copyright ...
cp命令的基本用法: cp 源文件 目標文件
如果目標文件不存在 就創建, 如果存在就覆蓋
實現一個cp命令其實就是讀寫文件的操作:
對於源文件: 把內容全部讀取到緩存中,用到的函數read
對於目標文件: 把緩存中的內容全部寫入到目標文件,用到的函數creat
1 /*================================================================ 2 * Copyright (C) 2018 . All rights reserved. 3 * 4 * 文件名稱:mycp.c 5 * 創 建 者:ghostwu(吳華) 6 * 創建日期:2018年01月08日 7 * 描 述:cp命令編寫 8 * 9 ================================================================*/ 10 11 #include <stdio.h> 12 #include <stdlib.h> 13 #include <sys/types.h> 14 #include <sys/stat.h> 15 #include <fcntl.h> 16 #include <unistd.h> 17 18 #define COPYMODE 0644 19 #define BUF 4096 20 21 int main(int argc, char *argv[]) 22 { 23 if ( argc != 3 ){ 24 printf( "usage:%s source destination\n", argv[0] ); 25 exit( -1 ); 26 } 27 28 int in_fd = -1, out_fd = -1; 29 30 if( ( in_fd = open( argv[1], O_RDONLY ) ) == -1 ) { 31 perror( "file open" ); 32 exit( -1 ); 33 } 34 35 if ( ( out_fd = creat( argv[2], COPYMODE ) ) == -1 ) { 36 perror( "file copy" ); 37 exit( -1 ); 38 } 39 40 char n_chars[BUF]; 41 int len = 0; 42 43 while( ( len = read( in_fd, n_chars, sizeof( n_chars ) ) ) > 0 ) { 44 if ( write( out_fd, n_chars, len ) != len ) { 45 printf( "文件:%s發生copy錯誤\n", argv[2] ); 46 exit( -1 ); 47 } 48 } 49 if( len == -1 ) { 50 printf( "讀取%s文件錯誤\n", argv[1] ); 51 exit( -1 ); 52 } 53 54 if( close( in_fd ) == -1 ) { 55 printf( "文件%s關閉失敗\n", argv[1] ); 56 exit( -1 ); 57 } 58 if( close( out_fd ) == -1 ) { 59 printf( "文件%s關閉失敗\n", argv[2] ); 60 exit( -1 ); 61 } 62 63 return 0; 64 }View Code