第一种办法:
使用read 和write函数
#include<iostream>
#include<unistd.h>
#include<stdlib.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#define FILE_MODE (S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH)
using namespace std;
int main(int argc,char *argv[])
{
int sourceFile=0;
int destinationFile=0;
int n=0;
char buf[256];
if(argc!=3)
{
cerr<<"usage : command sourceFile destinationFile"<<endl;
exit(-1);
}
for(int i=0;i<argc;i++)
{cout<<argv[i]<<endl;}
if((access(argv[1],F_OK|R_OK)==-1))
{
cerr<<"please check :"<<argv[1]<<endl;
exit(-1);
if((access(argv[2],W_OK)==-1))
{
cerr<<"check :"<<argv[2]<<endl;
exit(-1);
}
}
if((sourceFile=open(argv[1],O_RDONLY))==-1)
{
cerr<<"fail to open "<<argv[1]<<endl;
exit(-1);
}
if((destinationFile=open(argv[2],O_WRONLY|O_CREAT|O_TRUNC,FILE_MODE))==-1)
{
cerr<<"can't open destination file"<<endl;
exit(-1);
}
while((n=read(sourceFile,buf,sizeof(buf)))>0)
{
if(write(destinationFile,buf,sizeof(buf))==-1)
{
cerr<<"erro occur at writing file"<<endl;
}
}
cout<<"end"<<endl;
}