dup和dup2函数】的更多相关文章

下面两个函数都可用来复制一个现存的文件描述符: #include<unistd.h> int dup(int filedes); int dup2(int filedes,int filedes2); 两函数的返回值:若成功则返回新的文件描述符,若出错则返回-1 由dup返回的新文件描述符一定是当前可用文件描述符中的最小值.用dup2则可以用filedes2参数指定新描述符的数值.如果filedes2已经打开,则现将其关闭.如若filedes等于filedes2,则dup2返回filedes2…
疑问:管道应该不是这样实现的,因为这要求修改程序的代码 dup和dup2也是两个非常有用的调用,它们的作用都是用来复制一个文件的描述符.它们经常用来重定向进程的stdin.stdout和stderr.这两个函数的原形如下: #include <unistd.h> int dup( int oldfd ); int dup2( int oldfd, int targetfd ); dup()函数 利用函数dup,我们可以复制一个描述符.传给该函数一个既有的描述符,它就会返回一个新的描述符,这个新…
下面两个函数都可用来复制一个现有的文件描述符: #include <unistd.h> int dup( int filedes ); int dup2( int filedes, int filedes2 ); 两函数的返回值:若成功则返回新的文件描述符,若出错则返回- 由dup返回的新文件描述符一定是当前可用文件描述符中的最小数值.用dup2则可以用filedes2参数指定新描述符的数值.如果filedes2已经打开,则先将其关闭.如若filedes等于filedes2,则dup2返回fi…
dup和dup2也是两个很实用的调用,它们的作用都是用来复制一个文件的描写叙述符. 它们经经常使用来重定向进程的stdin.stdout和stderr.这两个函数的原形例如以下: #include <unistd.h> int dup( int oldfd ); int dup2( int oldfd, int targetfd ); dup()函数: 利用函数dup.我们能够复制一个描写叙述符. 传给该函数一个既有的描写叙述符,它就会返回一个新的描写叙述符,这个新的描写叙述符是传给它的描写叙…
1. 文件描述符在内核中数据结构在具体说dup/dup2之前,我认为有必要先了解一下文件描述符在内核中的形态.一个进程在此存在期间,会有一些文件被打开,从而会返回一些文件描述符,从shell中运行一个进程,默认会有3个文件描述符存在(0.1.2), 0与进程的标准输入相关联,1与进程的标准输出相关联,2与进程的标准错误输出相关联,一个进程当前有哪些打开的文件描述符可以通过/proc/进程ID/fd目录查看. 下图可以清楚的说明问题:进程表项 ———————————————— fd标志 文件指针…
dup函数 头文件和函数原型: #include <unistd.h> int dup(int oldfd); dup函数是用来打开一个新的文件描述符,指向和oldfd同一个文件,共享文件偏移量和文件状态. 共享偏移量代码: int main(int argc, char const *argv[]) { int fd = open("testDup.txt", O_RDONLY); int copyFd = dup(fd); //将fd阅读文件置于文件末尾,计算偏移量.…
依赖的头文件 #include <unistd.h> 函数定义 int dup(int oldfd); int dup2(int oldfd, int newfd); 函数作用 dup和dup2都可用来复制一个现存的文件描述符,使两个文件描述符指向同一个file结构体. 如果两个文件描述符指向同一个file结构体,File Status Flag和读写位置只保存一份在file结构体中,并且file结构体的引用计数是2. 如果两次open同一文件得到两个文件描述符,则每个描述符对应一个不同的fi…
今天和同学探讨了一下关于重定向输出到文件的问题,其中需要用到dup和dup2函数,因此来小小的总结一下. 首先来man一下: dup直接返回一个新的描述符和原来的描述符一样代表同一个资源,描述符的值就从当前未使用的最小的描述符来取. 而dup2则是可以指定描述符的值,这样通过把文件的描述符指定为STDOUT_FILENO,这样就相当于重定向输出为文件了. 所以有以下程序: #include <stdio.h> #include <unistd.h> #include <fcn…
C语言中dup和dup2函数的不同和使用 发表时间: 2012年11月15日 | 作者: 陈杰斌 | 所属分类: C语言 | 评论: 0 | 浏览: 1024 在unix高级编程中有介绍dup和dup2,但是没有实例说明, 笔者自己结合实例进行了测试了解. 在linux下,通过open打开以文件后,会返回一个文件描述符,文件描述符会指向一个文件表,文件表中的节点指针会指向节点表.看下图: 打开文件的内核数据结构 dup和dup2两个函数都可以用来复制打开的文件描述符,复制成功后和复制源共享同一个…
转:http://www.cnblogs.com/sdphome/archive/2011/04/30/2033381.html dup和dup2都可用来复制一个现存的文件描写叙述符,使两个文件描写叙述符指向同一个file结构体.假设两个文件描写叙述符指向同一个file结构体,File Status Flag和读写位置仅仅保存一份在file结构体中,而且file结构体的引用计数是2.假设两次open同一文件得到两个文件描写叙述符.则每一个描写叙述符相应一个不同的file结构体,能够有不同的Fil…