Linux文件共享(三)——dup
来源:互联网 发布:mysql保存特殊字符 编辑:程序博客网 时间:2024/04/28 04:35
原文:http://blog.chinaunix.net/uid-28541347-id-4198394.html 作者:lvyilong316 点击打开链接
dup返回的新文件描述符是当前可用文件描述符中的最小值。它返回的新描述符与参数fd共享一个文件表项(file对象)。调用dup会使file的引用计数增1,即增加“打开文件”引用计数。图3-3是apue中的原图。
我们用以下程序测试并说明:
点击(此处)折叠或打开
- #include <stdio.h>
- #include <unistd.h>
- #include <fcntl.h>
- #include <string.h>
- #define FILE_MODE (S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH)
- int main(int argc, char *argv[])
- {
- int fd1=0,fd2=0;
- char buf1[]="hello";
- char buf2[]="world";
- fd1=open("./txt",O_RDWR|O_CREAT,FILE_MODE);
- printf("fd1:%d\n",fd1);
- fd2=dup(fd1);
- printf("fd2:%d\n",fd2);
- if((write(fd1,buf1,strlen(buf1)))!=strlen(buf1))
- printf("write fd1 error!!!\n");
- close(fd1);
- if((write(fd2,buf2,strlen(buf2)))!=strlen(buf2))
- printf("write fd2 error!!!\n");
- return 0;
- }
运行结果如图:
我们发现第一次调用close,文件并没有真正关闭,因为dup是file的引用计数为2,close(fd1),只是使引用计数变为1,而file对象并没有销毁。我们可以用图形表示调用dup后的情况。
总结:dup会增加“打开文件引用计数”(file对象的引用计数),造成两个描述符指向同一file对象。但不会创建新的file对象。
0 0
- Linux文件共享(三)——dup
- Linux文件共享(三)——dup
- Linux文件共享(三)——dup
- linux—dup和dup2重定向文件描述符
- linux文件函数-dup
- Linux系统编程——文件描述符的复制:dup()和dup2()
- Linux系统编程——文件描述符的复制:dup()和dup2()
- Linux系统编程——文件描述符的复制:dup()和dup2()
- Linux系统编程——文件描述符的复制:dup()和dup2()
- Linux系统编程——文件描述符的复制:dup()和dup2()
- Linux系统编程——文件描述符的复制:dup()和dup2()
- Linux 文件系统(三)---dup和fork函数执行后的文件情况
- Linux 文件系统(三)---dup和fork函数执行后的文件情况
- Linux文件共享(五)——线程共享文件
- Linux文件共享(五)——线程共享文件
- Linux文件共享(五)——线程共享文件
- Linux三大共享文件的方法
- Linux三大共享文件的方法
- 关于Spring中AOP的两种动态代理
- css 箭头的实现
- 黑马28期java+android视频以及一些其他视频
- 使用AJAX传递中文参数,在后台接受出现乱码问题
- VOIP 通信 NAT穿越系列专题之NAT基本原理介绍及与VOIP关系
- Linux文件共享(三)——dup
- 新的开始
- 在我们的现代生活方式高清网络摄像机的意义
- Swift语言官方文档翻译(6)-Collection Types
- BASE64java 常用 加密方法
- 关于博客中的126相册图片不显示的问题
- hdoj - 2196 - Computer
- Windows Azure微软免费云空间成功申请和使用教程:安装WP博客
- 自家电脑搭建服务器可能遇到的问题及解决方法