欢迎光临散文网 会员登陆 & 注册

Linux---open,write,read,close函数

2021-11-22 08:05 作者:风菩提树  | 我要投稿

1.open函数

打开一个指定的文件并获得一个文件描述符

用法:

int fd = open("threetxt",O_RDWR|O_CREAT|O_TRUNC);

2.write函数

将数据写入指定的文件

用法:

char a[45] = "你是不是一个好人?";

int write_res = write(open_fd,a,strlen(a));

if(write_res == ERR_NUM)

{

perror("write1");

return ERR_NUM;

}

3.read函数

从指定的文件读取数据

用法:

    

 int n=read(open_fd1,array,sizeof(array));

4.close函数

关闭文件

用法:

close(fd);

5.练习:用read以及write实现cp的功能

#include 

#include 

#include 

#include 

#include 

#include 

#include 

int My_Cp(int open_fd1,int open_fd2);

int main(int argc , char *argv[])

{

if(argc != 3)

{

printf("指令有误,请重新输入!\n");

return -1;

}

if(access(argv[1],F_OK))

{

printf("没有目标文件:%s!",argv[1]);

return -1;

}

umask(0000);

int open_fd1 = open(argv[1],O_RDWR);

int open_fd2 = open(argv[2],O_RDWR | O_CREAT |O_TRUNC, 0777);

if(open_fd1 == -1 || open_fd2 == -1)

{

perror("open failed\n");

return -1;

}

My_Cp(open_fd1,open_fd2);

close(open_fd1);

close(open_fd2);

return 0;

}

int My_Cp(int open_fd1,int open_fd2)

{

char array[1024];

int n;

memset(array,0,1024);

while( (n=read(open_fd1,array,sizeof(array))) != 0)

{

if(n

{

perror("read");

return -1;

}

int write_res = write(open_fd2,array,n);

if(write_res == -1)

{

perror("write failed!\n");

return -1;

}

memset(array,0,1024);

}

return 0;

}


Linux---open,write,read,close函数的评论 (共 条)

分享到微博请遵守国家法律