我们在学习系统编程的时候,一定会有这样的经历,让你动手实现一个简单的cp命令,也就是拷贝相应的文件到对应的目录,或者说是复制吧,当然,实现非常的简单,我们来看看源码吧:
#include <stdio.h> #include <string.h> #include <unistd.h> #include <fcntl.h> int main(int argc ,char *argv[]) { if(argc != 3) { fprintf(stderr , "input argument error\n"); return -1 ; } int src_fd ; int dest_fd ; src_fd = open(argv[1] , O_RDONLY); if(-1 == src_fd) { perror("mycy srcfile error"); return -2 ; } char ch ; dest_fd = open(argv[2] , O_WRONLY | O_CREAT | O_EXCL , 0777); if(dest_fd < 0) { //文件存在,判断是否覆盖 printf("Over write ? Y/N\n"); ch = getchar(); if(ch == 'Y') { close(dest_fd); dest_fd = open(argv[2] , O_WRONLY | O_TRUNC); }else { return 0 ; } } //文件不存在,直接创建成功 char buffer[10] = {0} ; int ret ; while(1) { ret = read(src_fd , buffer , 10); write(dest_fd , buffer , ret); if(ret != 10) break; } close(dest_fd); close(src_fd); return 0 ; }