用系统调用函数中的文件操作函数实现普通文件的拷贝

    xiaoxiao2023-11-17  137

    系统调用函数中的文件操作函数: 1、open: int open( const char *filename,int flag,/int mode/) filename :文件路径+文件名 flag:打开方式 O_RDONLY->只读,O_WRONLY->只写,O_RDWR->读写 O_APPEND->追加,O-TRUNC->清空,O_CREAT->创建 通过按位或可同时设置多个flag:O_WRONLY | O-TRUNC mode:O_CREAT,设置创建文件权限

    2、read int read(int fd,void *buff,size_t size); fd: open打开的文件描述符 buff:指定用户缓冲区,将读取的数据存储的开始位置 size:指定一次最多读取字节的数据 返回值:-1,失败。成功:返回读取到的字节长度 0 读到文件末尾

    3、write int write(int fd,void *buff,size_t size); fd: open打开的文件描述符 buff:要写入到文件中的数据的起始位置 size:要写入的真实数据长度 字节 返回值:失败:-1,成功;返回真实写入的长度

    4、close int close (int fd) fd:关闭打开的文件描述符

    5、lseek int lseek(int fd,int size,int flag);//移动读写的光标 flag:SEEK_SET:文件开头 SEEK_CUR:文件中间 SEEK_END:文件末尾

    和C语言中的库函数相比差了一个fin,和后面的参数

    具体代码如下:

    #include<stdio.h> #include<fcntl.h> #include<assert.h> #include<stdlib.h> int main(int argc,char *argv[]) { if(argc<3) { printf("input error\n"); exit(0); } int fdr=open(argv[1],O_RDONLY);//只读 assert(fdr != -1); int fdw=open(argv[2],O_WRONLY | O_CREAT | O_TRUNC,0664);//写,创建,清空 assert(fdw != -1); while(1) { char buff[128]={0};//开始位置为0 int n=read(fdr,buff,127); assert(n != -1); if(n==0) { break; } int num=write(fdw,buff,n); assert (num != -1); } close(argv[1]); close(argv[2]); return 0; }

    终端上的操作:

    最新回复(0)