dup2复制文件描述符
来源:互联网 发布:rom软件下载 编辑:程序博客网 时间:2024/05/18 18:01
dup2是Linux下用来实现文件描述符复制的api,dup2(fd1, fd2)将会把fd1复制到指定的fd2下,如果fd2是一个已经打开的描述符,dup2会自动的先将其安静的关闭。我们知道Linux的进程表中会维护打开的文件表项,复制的作用是使fd2指向了fd1所指向同一个文件。当我们关闭了指向同一个文件的fd的时候,关闭一个fd另外一个fd是不受影响的。下面的例子我们通过把/dev/null复制给标准输出,让程序的标准输出消失掉。
例子
#include <unistd.h>#include <stdio.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <string.h>int main() { printf("befor dup stdout!\n"); int devNullFd = open("/dev/null", O_RDWR); dup2(devNullFd, STDOUT_FILENO); printf("after dup stdout!\n"); sleep(30); close(devNullFd); const char* testStr = "test"; write(STDOUT_FILENO, testStr, strlen(testStr)); perror("error:"); sleep(10); close(devNullFd); write(devNullFd, testStr, strlen(testStr)); perror("error:"); return 0;}
结果
befor dup stdout!error:: Successerror:: Bad file descriptor
文件表结构
sudo ls -l /proc/37410/fdtotal 0lrwx------ 1 oujiangping oujiangping 64 Aug 21 16:35 0 -> /dev/pts/6lrwx------ 1 oujiangping oujiangping 64 Aug 21 16:35 1 -> /dev/nulllrwx------ 1 oujiangping oujiangping 64 Aug 21 16:34 2 -> /dev/pts/6lrwx------ 1 oujiangping oujiangping 64 Aug 21 16:35 3 -> /dev/null
阅读全文
1 0
- dup2复制文件描述符
- dup2 复制文件描述符
- 3.12 dup2函数-文件描述符复制
- dup,dup2函数,复制文件描述符
- linux dup,dup2,dup3 复制一个文件描述符
- dup和dup2函数---复制文件描述符
- linux dup,dup2,dup3 复制一个文件描述符
- 文件描述符的复制:dup()和dup2()
- apue读书笔记【九】:复制一个现存的文件描述符 dup dup2 fcntl
- Linux系统编程——文件描述符的复制:dup()和dup2()
- Linux系统编程——文件描述符的复制:dup()和dup2()
- Linux系统编程——文件描述符的复制:dup()和dup2()
- 【Linux系统编程】 文件描述符的复制:dup()和dup2()
- Linux系统编程——文件描述符的复制:dup()和dup2()
- Linux系统编程——文件描述符的复制:dup()和dup2()
- Linux系统编程——文件描述符的复制:dup()和dup2()
- 文件描述符 dup/dup2函数
- 文件描述符和dup dup2 fcntl
- Mysql之1050错误解决办法
- 看完让你彻底搞懂Websocket原理
- DOS命令大全(经典收藏)
- Jmeter+Maven+jenkins接口和性能可持续集成测试
- nagios iphone安装版
- dup2复制文件描述符
- strings
- 插入排序
- 【经验】PCB电路板表面处理工艺——沉金板与镀金板的区别(太实用了)
- CS6安装mysql-Pernoca
- 委托模式
- Linux expr命令
- c语言实现线性表的建立,初始化,插入,删除,查找,遍历以及时间复杂度分析
- C语言接口与实现【第四章】 setjmp/longjmp非局部跳转函数分析