dup2复制文件描述符
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:: Success
error:: Bad file descriptor
文件表结构
sudo ls -l /proc/37410/fd
total 0
lrwx------ 1 oujiangping oujiangping 64 Aug 21 16:35 0 -> /dev/pts/6
lrwx------ 1 oujiangping oujiangping 64 Aug 21 16:35 1 -> /dev/null
lrwx------ 1 oujiangping oujiangping 64 Aug 21 16:34 2 -> /dev/pts/6
lrwx------ 1 oujiangping oujiangping 64 Aug 21 16:35 3 -> /dev/null
dup2复制文件描述符相关推荐
- linux 标准输出 复制,使用LINUX dup2 复制文件描述符到标准输出STDOUT_FILENO
7 8 #include 9 #include 10 #include 11 #include 12 #include 13 #include 14 15 16 17 int main(int arg ...
- dup、dup2实现文件描述符重定向(标准输入、标准输出、标准错误输出)
目录 dup函数 dup2函数 重定向标准输入 重定向标准输出 重定向标准错误输出 重定向恢复 总结 在前文中,可以知道,文件描述符实际上是指向文件表项的指针数组索引,也就相当于每个文件描述符都对应一 ...
- 【Linux系统编程】 文件描述符的复制:dup()和dup2()
dup() 和 dup2() 是两个非常有用的系统调用,都是用来复制一个文件的描述符,使新的文件描述符也标识旧的文件描述符所标识的文件. 这个过程类似于现实生活中的配钥匙,钥匙相当于文件描述符,锁相当 ...
- Linux:dup/dup2 文件描述符重定向函数(有图有代码有真相!!!)
一.dup/dup2 有时我们希望把标准输入重定向到一个文件,或者把标准输出重定向到一个网络连接.系统调用dup和dup2能够复制文件描述符.dup返回新的文件文件描述符(没有用的文件描述符最小的编号 ...
- linux存储--文件描述符以及file结构体(一)
一.什么是文件描述符 在Linux下一切皆文件,对于内核而言,所有打开的文件都通过文件描述符引用,文件描述符是一个非负整数,当打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符.当读. ...
- linux 打开文件表 文件描述符,文件描述符-mjsc1023-ChinaUnix博客
是个很小的正整数,它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表. 文件描述符及其作用 对于 Linux 而言,所有对设备和文件的操作都使用文件描述符来进行的.文件描述符是一个非负 ...
- linux下文件描述符的介绍
linux下文件描述符的介绍 (2012-10-02 16:01:56) 转载▼ 标签: 描述符 调用 返回 进程 限制 it 分类:linux 当某个程序打开文件时,操作系统返回相应的文件描述符,程 ...
- Linux C:文件描述符、IO重定向、恢复标准输入输出
目录 一.文件描述符 二.IO重定向 三.重定向回终端.伪终端 四.恢复标准输入输出 一.文件描述符 在Linux中,文件描述符是一个非负整数的数据类型.是FILE结构体中的一个成员属性. 每打开或者 ...
- Linux学习:文件描述符相关函数
(1)复制文件描述符 头文件: #include <unistd.h> 原型: int dup(int oldfd); 参数: 要复制的文件描述符. 返回值:新的文件描述符. 效果: du ...
最新文章
- 如何入门学习自动驾驶感知技术?
- UA PHYS515A 电磁理论V 电磁波与辐射1 电磁波的方程
- Java 8 - 收集器Collectors_分区partitioningBy
- java url 返回值_java提交url后返回值怎么取
- OpenCV使用Orbbec Astra 3D相机
- php 字符串匹配 like,ThinkPHP like模糊查询,like多匹配查询,between查询,in查询,一般查询书写方法...
- Mysql的安装和配置
- 命令行shell 用于SQLite
- WebSocket与http长连接的区别
- PHP伪协议-文件包含漏洞常用的伪协议
- linux查看消息队列的状态,linux – 如何知道某个时间点在消息队列中收到的消息数...
- java web典型模块大全_python+selenium基于po模式的web自动化测试框架
- 30岁女IT工程师感叹:靠这工具,把报表做成养老工作,月薪快3W
- Nginx资源合并优化模块nginx-http-concat
- 关于举办“2022年(第15届)中国大学生计算机设计大赛”通知
- linux下mkisofs制作光盘映像cdrecord刻录光盘
- Gartner2021新兴技术成熟度曲线,AI与超自动化支撑数字化变革
- 【ArcGIS微课1000例】0039:ArcGIS注记转CAD注记的方法
- LeetCode 557 反转字符串中的单词 III
- 【BigHereo 40】---L13---C++语言大总结
热门文章
- dwg格式的计算机图,【2人回答】电脑上得CADDWG文件图标如何变成这样?-3D溜溜网...
- 空间伤感日子分享:这一刻,我输给了眼泪
- KepServer的下载安装与使用说明
- 招聘大师版v6.7.5求职招聘
- iOS之蓝牙设备的唯一标识问题
- TP整合微信遇到的一系列问题
- 生成树协议实验报告_【网络技术联盟站】从原理到实验再到优化剖析STP生成树协议...
- DRV8812芯片被国产激光打印机驱动芯片TMI8262取代
- 浏览计算机已查找驱动程序软件,魅族魅蓝MX4pro官方固件刷机教程_线刷|救砖教程图解...
- day10-python操作word文档作业