
—-今天接着昨天的话题讲,在昨天的文章里面,我们讲到了文件共享有三种实现方式,其中一种实现方式就是我们今天要讲的dup和dup2函数来实现了;那么咋们也就不废话 了,直接直奔主题吧。
一、dup函数解析:
1)首先我对这个dup函数的用法也不熟,所以说用man手册来查,这是最好的学习方法(或者网上查,有一大波博客会有讲这个的用法,但就我个人而言,还是要养成自己去探索一个新东西的习惯),看下图:
注解:这里主要是说了dup函数在旧的文件描述符复制会返回一个新的文件描述符,并且这个新的文件描述符是在连续接着旧的文件描述(比如旧的文件描述符是3,新的文件描述符则是4)。下面我们还是来看代码示例和试验现象:
代码语言:javascript
代码运行次数: 0 运行 复制
2、dup返回的fd和原来的oldfd都指向oldfd打开的那个【动态文件】,操作这两个fd实际操作的都是oldfd打开的那个文件。实际上构成了文件共享。和昨天一样,我们看一下对同一个文件操作,它是接续写还是分别写:
代码语言:javascript
代码运行次数: 0 运行 复制
二、dup2函数解析:
1、相比于dup函数,dup2函数它的优势就是可以指定新的文件描述符的大小,用法比较灵活。我来看一个代码示例和试验现象:
代码语言:javascript
代码运行次数: 0 运行 复制
2、dup2和dup函数一样对文件写操作都是接续写的,这里我就不做演示了,写法和dup函数一样。上面的源代码链接:https://hub.com/1121518wo/-/tree/master
三、Linux系统下管道符和重定向的学习补充:
这里可以参考刘遄老师写的 这本书,写的非常好:https://www.linuxprobe.com/chapter-03.html
以上就是系统下dup和dup2函数解析的详细内容,更多请关注php中文网其它相关文章!