Linux命令實現(2)cp

再接再勵  完成cp

//cp.c

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>

#define BUFFERSIZE 4096
#define COPYMODE 0644
void oops(char *s1,char *s2);
void oops(char *s1,char *s2)
{
    fprintf(stderr,"Error:%s",s1);
    perror(s2);
    exit(1);
}




int main(int argc, char *argv[])
{
  printf("Hello, world!/n");
  int in_fd,out_fd,n_chars;
  char buf[BUFFERSIZE];
 
  if (argc!=3)
  {
      fprintf(stderr,"usage:%s source destination/n",*argv);
      exit(1);
  }
  if((in_fd=open(argv[1],O_RDONLY))==-1)
      oops("Can not open",argv[1]);
  if((out_fd=open(argv[2],O_RDWR))==-1)
      oops("Cannot creat",argv[2]);
 
  while((n_chars=read(in_fd,buf,BUFFERSIZE))>0)
      if(write(out_fd,buf,n_chars)!=n_chars)
         oops("Read error to",argv[2]);
  if(n_chars==-1)
     oops("Read error from",argv[1]);
  if(close(in_fd)==-1||close(out_fd)==-1)
     oops("Error close files","");
 
  return EXIT_SUCCESS;
}


眼睛好難受   得休息了
發佈了29 篇原創文章 · 獲贊 2 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章