Linux环境c语言实现copy功能
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc,int **argv)//argc指参数个数,**argv指参数名称
{
int fdsrc;//定义源文件参数
int fddes;//定义新文件参数
char *readbuf=NULL;
if(argc!=3)//这里的3表示三个参数:1、argv[1] 2、argv[2] 3、运行调用此程序时实际上也是给main函数施加了一个参数
{
printf("param error\n");
exit(-1);
}
fdsrc=open(argv[1],O_RDWR);
int size=lseek(fdsrc,0,SEEK_END);//lseek可以通过光标位移找出文件大小
lseek(fdsrc,0,SEEK_SET);//光标位移至文件开头便于后面进行write
readbuf=(char *)malloc(sizeof(char)*size);
int n_read=read(fdsrc,readbuf,size+8);//+8防止内存不够
fddes=open(argv[2],O_RDWR|O_CREAT|O_TRUNC,0600);//O_TRUNC:若文件存在,则长度被截为0,属性不变
int n_write=write(fddes,readbuf,strlen(readbuf));
close(fdsrc);
close(fddes);
return 0;
}