實現linux的cp命令
阿新 • • 發佈:2018-12-06
主要運用open(),read(),write()函式來進行內容的讀寫。模擬實現linux命令的cp功能。
/* C語言實現linux cp命令 */ #include <sys/stat.h> //open()所需標頭檔案 #include <sys/types.h> //lseek()所需標頭檔案 #include <fcntl.h> #include <stdio.h> #include <string.h> #include <stdlib.h> #include <unistd.h> //write read 所需標頭檔案 int main(int argc,char *argv[]) { if(argc<3) { printf("傳入的引數少了,應該輸入 ./main filename destname\n"); return -1; } int fd; int buf_fd; int buf_size; char buf_addr[100]={0}; buf_fd=open(argv[1],O_RDWR); //開啟原始檔 buf_size=lseek(buf_fd,0,SEEK_END); //將檔案指標偏移到檔案末尾 printf("buf_size is:%d\n",buf_size); lseek(buf_fd,-buf_size,SEEK_CUR); //將檔案指標向前移動buf_size個位元組,否則無法讀到檔案內容 read(buf_fd,buf_addr,buf_size); //讀出原始檔的內容到buf_addr緩衝器 printf("buf_addr is:%s\n",buf_addr); //開啟目標檔案,不存在則建立,存在則清空,可讀可寫 fd=open(argv[2],O_CREAT|O_RDWR|O_TRUNC); if(fd==-1) { perror("failed"); return -1; }else{ //將buf_addr緩衝器內容寫入目標檔案中 write(fd,buf_addr,buf_size); printf("複製%s中的內容到%s成功\n",argv[1],argv[2]); } close(fd); close(buf_fd); return 0; }