免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1462 | 回复: 4
打印 上一主题 下一主题

一个关于文件描述符复制的,大家帮忙分析一下 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-10-17 11:15 |只看该作者 |倒序浏览
#include<fcntl.h>

int main()
{
        int fdold;
        int fdnew=10;
        int fdtest;
        if((fdold=open("test",O_RDONLY|O_CREAT,0666))<0)
        {
                perror("open file fail";
                exit(1);
        }
        printf("now the fdnew is :%d\n",fdnew);
        fdtest=dup2(fdold,fdnew);
        printf("the return value is:%d\n",fdtest);
        printf("the old is :%d\nthe new is :%d\n",fdold,fdnew);

        exit(0);
}

执行完dup2以后fdtest和fdnew的值分别是多少?
如果fdnew不辅初值,情况又是什么呢?
小弟在此多谢了

[ 本帖最后由 redbad 于 2006-10-17 11:16 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2006-10-17 11:17 |只看该作者
晕!代码里面怎么还有表情符号呢?
这回换中文的分号
perror("open file fail");

论坛徽章:
0
3 [报告]
发表于 2006-10-17 19:01 |只看该作者
这么多人,怎么没个回答的阿?

论坛徽章:
0
4 [报告]
发表于 2006-10-17 19:34 |只看该作者
fdold=3
fdtest=fdnew=10

dup(2) 返回最小的可用 fd,而 dup2(2) 返回的是你所指定的 fd。
不可以在 dup2(2) 的参数里不赋值。不希望手动给出新 fd,那么请使用 dup(2)。

这是基础问题,希望能够通过多读书、查看手册的方式解决。

论坛徽章:
0
5 [报告]
发表于 2006-10-17 21:08 |只看该作者
自己打印出来看就知道是多少了.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP