免费注册 查看新帖 |

Chinaunix

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

solaris 打开文件返回的fd有问题 [复制链接]

论坛徽章:
3
亥猪
日期:2013-08-28 12:50:23白羊座
日期:2013-11-25 12:55:50酉鸡
日期:2014-02-12 10:46:13
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-12-07 17:05 |只看该作者 |倒序浏览
最近在solaris服务器上弄了一下共享内存相关测试用例,不知道在哪地方参数设置的系统的配置有影响,过后,再次运行程序一直出错。查了下,出错的地方在对open返回的fd的操作上,我把fd作为参数传递给那些诸如read write ftruncate 系统调用接口中,错误提示:
Bad file number   我把fd打印出来一看,竟然是3,正常情况下至少也得是4啊,如果是第一次打开文件的话。。。

在这个问题之前一会儿还有一个非常奇怪的现象,我并没有设置文件的默认权限,我在程序中创建一个文件后,它的默认权限竟然是5,ls -al 查看的时候竟然发现了 在用户权限的第三位设置了S。在找不到解决办法的情况下,无奈,只有将整个文件夹给删了。之后就写了上面的程序,程序中创建一文件,此时的默认权限才恢复原来的。但上面的问题又出现了???
望牛X的大哥们能指点一二!!!

我把我测试用例的相关代码贴出来,大侠们啾啾。嘿嘿   ^_^   ^_^
int fd=open("a.txt",0660|O_CREAT);
        if(fd==-1){
                perror("open");
                exit(-1);
        }
        int ret;
        printf("%d\n",fd);
//      ret=ftruncate(fd,4);
        lseek(fd,4,SEEK_SET);
        ret=write(fd,"",1);

论坛徽章:
12
CU大牛徽章
日期:2013-09-18 15:20:4815-16赛季CBA联赛之同曦
日期:2016-02-01 20:28:25IT运维版块每日发帖之星
日期:2015-11-10 06:20:00操作系统版块每日发帖之星
日期:2015-10-28 06:20:002015亚冠之塔什干棉农
日期:2015-06-04 11:41:56丑牛
日期:2014-05-10 16:11:33技术图书徽章
日期:2013-09-23 13:25:58CU大牛徽章
日期:2013-09-18 15:21:17CU大牛徽章
日期:2013-09-18 15:21:12CU大牛徽章
日期:2013-09-18 15:21:06CU大牛徽章
日期:2013-09-18 15:20:58数据库技术版块每日发帖之星
日期:2016-02-08 06:20:00
2 [报告]
发表于 2012-12-07 22:58 |只看该作者
joepayne 发表于 2012-12-07 17:05
正常情况下至少也得是4啊

为什么是4?
0是标准输入,1是标准输出,2是标准错误。接下来不就是3么

论坛徽章:
3
亥猪
日期:2013-08-28 12:50:23白羊座
日期:2013-11-25 12:55:50酉鸡
日期:2014-02-12 10:46:13
3 [报告]
发表于 2012-12-12 19:39 |只看该作者
joepayne 发表于 2012-12-07 17:05
正常情况下至少也得是4啊

为什么是4?
0是标准输入,1是标准输出,2是标准错误。接下来不就是3么
不知道   可能是平台的原因吧  以前我在LINUX 平台上留意了这一问题  现在在UNIX平台下   不过  谢谢啦   问题解决了   嘿嘿  我把open函数用错了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP