免费注册 查看新帖 |

Chinaunix

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

问个关于creat的简单问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-03-08 23:09 |只看该作者 |倒序浏览
apue上的例子:

下面的代码用于演示文件空洞
  #include <sys/types.h>
  #include <sys/stat.h>
  #include <fcntl.h>
  #include "ourhdr"
  
char buffer1[]="abcdefghij";
  char buffer2[]="ABCDEFGHIJ";
  int main(void)
  {
    int fd;
    if((fd=creat("file.hole",FILE_MODE))<0)
     err_sys("creat error");
                                                                             
    if(write(fd,buffer1,10)!=10) //位移量现在是10
     err_sys("buffer1 write  error");
                                                                             
    if(lseek(fd,40,SEEK_SET)==-1) //位移量现在是40
     err_sys("lseek eror");
                                                                             
   if(write(fd,buffer2,10)!=10) //位移量现在是50,在位移量介于10和40之间的位统统置为0
     err_sys("buffer2 write  error");
                                                                   exit(0);
  }


creat后面的file_mode的定义是什么啊?

论坛徽章:
0
2 [报告]
发表于 2007-03-08 23:26 |只看该作者
你看一下论坛的Linux 的C函数手册就知道了

论坛徽章:
0
3 [报告]
发表于 2007-03-08 23:35 |只看该作者
弱弱的问:手册在哪儿啊?:(

论坛徽章:
0
4 [报告]
发表于 2007-03-08 23:39 |只看该作者
file_mode是文件的制定的模式
但在那个程序中,并没有对file_mode本身做定义阿

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
5 [报告]
发表于 2007-03-09 00:25 |只看该作者
原帖由 semomo 于 2007-3-8 23:39 发表于 4楼  
file_mode是文件的制定的模式
但在那个程序中,并没有对file_mode本身做定义阿


把 APUE2 附带的源码下载下来看下吧, FILE_MODE 是作者自己定义的一个宏,
就在那个 ourhdr.h (即附录 B.1)里面.

[ 本帖最后由 MMMIX 于 2007-3-9 00:28 编辑 ]

论坛徽章:
0
6 [报告]
发表于 2007-03-10 00:44 |只看该作者
谢谢
昨天找了半天ourhdr.h,竟然没看见那一行。。。

论坛徽章:
0
7 [报告]
发表于 2007-03-10 10:19 |只看该作者
应该是程序定义的宏,creat函数原型是这样的:
int fd=creat(char *filename, mode_t mode)
其中mode是4、2、1的组合,如:0755,0644等,其中4、2、1分别对应r、w、x。

论坛徽章:
0
8 [报告]
发表于 2007-03-10 10:20 |只看该作者
另外,fd在程序退出是需要close

论坛徽章:
0
9 [报告]
发表于 2007-03-10 10:47 |只看该作者
It stand for the mode in which the file will be created. Refer to creat(2) for more info.
Note: creat(2) is obsolete, and please use open(2) with O_CREAT instead.

论坛徽章:
0
10 [报告]
发表于 2007-03-10 13:21 |只看该作者
是在apue.h中定义的
#define FILE_MODE       (S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP