- 论坛徽章:
- 3
|
最近在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); |
|