拷贝上课的视频,到当前路径new.mp4
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#define N 1024*1024 //1Mb
//拷贝大文件,argv[1]->源文件;argv[2]->目标文件
int main(int argc,char **argv)
{
int fd1,fd2;
char buf[N];
int ret;
fd1=open(argv[1],O_RDWR);//打开源文件
if(fd1==-1)
{
perror("open fd1 fail\n");
return -1;
}
fd2=open(argv[2],O_RDWR|O_CREAT|O_TRUNC);//创建目标文件(会覆盖同名文件)
if(fd2==-1)
{
prrror("open fd2 fail");
return -1;
}
while(1)
{
bzero(buf,sizeof(buf));//清空buf
ret=read(fd1,buf,N);//读取ret个字节(ret<=N)
if(ret==0)
break;
write(fd2,buf,ret);//把读取的内容写进new.mp4
}
close(fd1);
close(fd2);
return 0;
}
文件的打开/新建 man 2 open
注:linux中所有的函数,只要参数需要用到多个宏定义,都是使用按位或连接起来
#include <sys/types.h>
#include <sys/stat.h>