最近闲的无聊,开始看APUE,Richard Stevens的神作。
看到第三章的习题3.2,要求“编写一个与3.12节中dup2功能相同的函数,要求不调用fcntl函数,并且要有正确的出错处理。”
基本解决思路,利用dup不断执行,直到dup返回的fd是要求的fd即可。关键是出错处理,面临的基本问题是:不用fcntl,怎么知道一个fd是否已经打开呢?在fcntl的源码里面开了一下,补充了出错处理部分,但是觉得这样就没太大意思,基本就是照抄嘛。。。
代码在这儿
April 10th, 2008 firenet Posted in c 3 Comments »
最近闲的无聊,开始看APUE,Richard Stevens的神作。
看到第三章的习题3.2,要求“编写一个与3.12节中dup2功能相同的函数,要求不调用fcntl函数,并且要有正确的出错处理。”
基本解决思路,利用dup不断执行,直到dup返回的fd是要求的fd即可。关键是出错处理,面临的基本问题是:不用fcntl,怎么知道一个fd是否已经打开呢?在fcntl的源码里面开了一下,补充了出错处理部分,但是觉得这样就没太大意思,基本就是照抄嘛。。。
代码在这儿