solaris 打开文件返回的fd有问题
最近在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); joepayne 发表于 2012-12-07 17:05 static/image/common/back.gif
正常情况下至少也得是4啊
为什么是4?
0是标准输入,1是标准输出,2是标准错误。接下来不就是3么
joepayne 发表于 2012-12-07 17:05
正常情况下至少也得是4啊
为什么是4?
0是标准输入,1是标准输出,2是标准错误。接下来不就是3么不知道 可能是平台的原因吧以前我在LINUX 平台上留意了这一问题现在在UNIX平台下 不过谢谢啦 问题解决了 嘿嘿我把open函数用错了
页:
[1]