linux复制文件描述符,linux C复习:文件操作(文件描述符的复制)

文件描述符的复制函数dup、dup2:

函数原型:

#include                                         //头文件

int dup(int oldfd);                                            //复制一个文件描述符,并返回新的文件描述符,失败返回-1

int dup2(int oldfd, int newfd);                          //指定一个新的文件描述符,成功返回新的文件描述符,失败返回-1

说明:文件描述符的复制不会复制内核管理内中的文件表,也就是说:两个文件描述符共用一个文件表

dup.c

//打开文件

int fd = open("b.bat",O_CREAT|O_RDWR); //fd = 3

if( -1 == fd)

perror("错误:"),exit(-1);

printf("fd = %d\n",fd);

//文件描述符赋值

int fd2 = dup(fd);

printf("fd2 = %d\n",fd2); //fd2 = 4

//准备数据

char * str = "ABCDE";

char * str2 = "abcdef";

char * str3 = "123456";

//使用以上两个文件描述符写入文件

write(fd,str,strlen(str));

write(fd2,str2,strlen(str2)); //因为共用文件表,所以写入的数据会被追加到末尾

//使dup2函数指定一个新的文件描述符

int fd3 = dup2(fd,10); //指定一个新的文件描述符10并返回。

write(fd3,str3,strlen(str3));

close(fd); //各自关闭文件描述符

close(fd2);

close(fd3);

//查看文件写入

0818b9ca8b590ca3270a3433284dd417.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值