APUE习题[实现dup2函数功能,不使用fcntl]

2014-11-24 09:10:18 · 作者: · 浏览: 0

学习,记录。


int dup2(int oldhandle, int newhandle);


函数功能:


复制文件句柄,newhandle指定的dup2和dup的区别就是可以用newfd参数指定新描述符的数值,如果newfd已经打开,则先将其关闭。如果newfd等于oldfd,则dup2返回newfd, 而不关闭它。dup2函数返回的新文件描述符同样与参数oldfd共享同一文件表项。


关键部分实现思路:


先close关闭需要复制到的文件描述符newdup。


连续dup,每dup一次产生的新的fd记录下来。


当新产生的fd等于需要产生的fd的时候,跳出循环,并把前面产生的fd全都close掉,返回该描述符。


注释挺详细,看注释吧


执行结果: