dup函数

函数原型:

int dup(int oldfd);

作用:
复制oldfd,返回新的文件描述符,这两个文件描述符执行相同的系统资源,而且新的文件描述符是操作系统给进程分配没有用到的数字最小的那个。

注意:这个复制操作,不会复制有关的文件描述符标志,比如说CLOSE_ONEXEC等。

代码实例:

#include <errno.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>void print_inode(int fd) {struct stat info;if (fstat(fd, &info) != 0) {//fprintf(stderr, "fstat() error for fd %d: %s", fd, strerror(errno));perror("fstat() error\n");} else {printf("The inode of fd %d is %d\n", fd, (int)info.st_ino);}
}int main() {int fd;if ((fd = dup(0)) < 0) {perror("dup() error\n");} else {print_inode(0);print_inode(fd);close(fd);}return 0;
}
/*
The inode of fd 0 is 3
The inode of fd 3 is 3
*/

dup2函数

函数原型

int dup2(int oldfd, int newfd);

作用同上,不过是把复制后的fd赋值给newfd,也不能复制文件描述的标记。

两者失败都会返回-1

Linux的dup与dup2函数相关推荐

  1. linux文件重定向 dup,linux之dup和dup2函数解析

    linux之dup和dup2函数解析 linux之dup和dup2函数解析 系统调用dup和dup2能够复制文件描述符.dup返回新的文件文件描述符(没有用的文件描述符最小的编号).dup2可以让用户 ...

  2. 九、Linux之dup和dup2函数

    九.Linux之dup和dup2函数 目录: 九.Linux之dup和dup2函数 一.重定向 二.dup()函数原型(dup--duplicate) int dup(int oldfd); 三.du ...

  3. linux c——dup( )和dup2( )函数详解

    dup()函数和dup2()函数书上在文件操作那一章,已经讲过了,这周看重定向这块,发现它挺重要,就再看了回,记录下. 1. dup函数 头文件及函数定义: #include <unistd.h ...

  4. linux之dup和dup2函数解析

    理论介绍: 1. 文件描述符在内核中数据结构 在具体说dup/dup2之前,我认为有必要先了解一下文件描述符在内核中的形态.一个进程在此存在期间,会有一些文件被打开,从而会返回一些文件描述符,从she ...

  5. linux存储--dup和dup2函数解析(十八)

    1.文件描述符在内核中数据结构 在具体说dup/dup2之前,我认为有必要先了解一下文件描述符在内核中的形态.一个进程在此存在期间,会有一些文件被打开,从而会返回一些文件描述符,从shell中运行一个 ...

  6. linux dup用法,Linux:dup和dup2文件描述符及函数解析,dupdup2

    Linux:dup和dup2文件描述符及函数解析,dupdup2 一.文件描述符 1.1 文件描述符概念 我们知道在Linux下一切皆文件,因此我们需要一个东西对这些文件进行管理,此时就需要文件描述符 ...

  7. dup和dup2函数

    dup和dup2函数 dup和dup2用于复制文件描述符,通常用于重定向. #include <unistd.h>int dup(int oldfd); int dup2(int oldf ...

  8. unix:dup与dup2函数详解

    dup操作 功能:复制文件描述符,重定向输入输出. 函数: #include <unistd.h> int dup(int oldfd); int dup2(int oldfd, int ...

  9. linux中dup2函数,dup与dup2函数

    依赖的头文件 #include 函数定义 int dup(int oldfd); int dup2(int oldfd, int newfd); 函数作用 dup和dup2都可用来复制一个现存的文件描 ...

最新文章

  1. 详解|清华大学100页PPT:工业机器人技术详解
  2. 安装ipvsadm 用make编译出现错误解决方法
  3. Python 知识点全解析系列之列表推导式(list comprehension)
  4. Python和Java就业前景对比
  5. mysql删除密码代码_mysql 用户新建、受权、删除、密码修改
  6. Heredoc和Nowdoc
  7. mysql jdbc百度_mysql8.0 jdbc连接注意事项
  8. 隐藏控制台程序的窗口
  9. Android手机安装谷歌服务框架
  10. 别跑!JAVA!-----------一篇关于JAVA的博客
  11. microsoftstore连不上网_修复Microsoft Store 无法连接网络 代码: 0x80072EFD
  12. char *p = hello world!
  13. hive时间戳函数之unix_timestamp(),from_unixtime,to_utc_timestamp
  14. UI测试与iTest自动化UI测试工具
  15. 「镁客·请讲」VR的拓荒者,幻境视界让VR内容拥有艺术之美
  16. uniapp——漂亮的按钮,圆角view,渐变色view,圆角边框view,点击效果波动、点击放大效果
  17. 物联网设备数据流转之数据如何实时推送至前端:WebSocket前端接收
  18. 嵩明:“整村授信”助力乡村振兴
  19. dataSource配置oracle,SpringBoot数据源配置DataSourceConfig
  20. LINK : fatal error LNK1104: 无法打开文件“mfc140u.lib” 错误解决方案

热门文章

  1. 数据结构 2-3-4 静态链表
  2. ~~Kruskal算法
  3. 目标检测——模型效率的优化
  4. Python——相对路径的学习笔记
  5. LaTeX中宋体中文无法加粗的情况
  6. 【干货】60 余家免费正版图片网站
  7. 3n+1b 备忘录方法
  8. Arm TrustZone 学习 - 0.2 Qemu - OPTEE 虚拟运行环境搭建
  9. 火星人谚语系列之五:答案将由我在下一分钟给出(心想事成)
  10. 【编程珠玑】第九章 代码调优