Chinaunix首页 | 论坛 | 博客
  • 博客访问: 388383
  • 博文数量: 83
  • 博客积分: 1650
  • 博客等级: 上尉
  • 技术积分: 861
  • 用 户 组: 普通用户
  • 注册时间: 2010-10-18 18:22
文章分类
文章存档

2021年(1)

2016年(1)

2015年(2)

2014年(3)

2013年(12)

2012年(16)

2011年(18)

2010年(30)

分类: LINUX

2010-11-03 17:45:38

Openclose

(1)   Openclose函数说明

Open函数是用于打开或创建文件,打开或创建文件时可以指定文件属性及用户的权限等到各种参数。

close函数是用于关闭一个打开文件。当一个进程终止时,它所有已打开的文件都由内核

自动关闭,很多程序都使用这一功能而不显示地关闭一个文件。

2openclose函数格式

open函数的语法格式如表6.1 所示。

open函数语法要点

所需头文件

#include // 提供类型pid_t的定义

#include

#include

函数原型int open(const char *pathnameflagsint perms)

pathname 被打开的文件名(可包括路径名)

O_RDONLY:只读方式打开文件

O_WRONLY:可写方式打开文件

O_RDWR:读写方式打开文件

O_CREAT:如果该文件不存在,就创建一个新的文件,并用第三个参

数为其设置权限

O_EXCL:如果使用O_CREAT时文件存在,则可返回错误消息。这一

参数可测试文件是否存在

O_NOCTTY:使用本参数时,如文件为终端,那么终端不可以作为调

open()系统调用的那个进程的控制终端

O_TRUNC:如文件已经存在,并且以只读或只写成功打开,那么会先

全部删除文件中原有数据

flag:文件

打开的方

O+APPEND:以添加方式打开文件,在打开文件的同时,文件指针指

向文件的末尾

函数传入值

perms 被打开文件的存取权限,为8进制表示法

函数返回值

成功:返回文件描述符

失败:-1

open函数中,flag参数可通过“|”组合构成,但前3 个函数不能相互组合。perms

文件的存取权限,采用8 进制表示法,相关内容读者可参见第2章。

close函数的语法格式如下

close函数语法要点

所需头文件#include

函数原型int close(int fd)

函数输入值fd:文件描述符

函数返回值0:成功

-1:出错

3openclose函数使用实例

下面实例中的open 函数带有3 flag 参数:O_CREATO_TRUNC O_WRONLY

这样就可以对不同的情况指定相应的处理方法。另外,这里对该文件的权限设置为0600。其

源码如下所示:

/*open.c*/

#include

#include

#include

#include

#include

#include

int main(void)

{

int fd;

/*调用open函数,以可读写的方式打开,注意选项可以用“|”符号连接*/

if((fd = open("/home/laohan/hello.c", O_CREAT | O_TRUNC | O_WRONLY , 0600 ))<0)

{

perror("open:");

exit(1);

}

Else

{

printf("Open file: hello.c %d\n",fd);

}

if( close(fd) < 0 )

{

perror("close:");

exit(1);

}

else

printf("Close hello.c\n");

exit(0);

}

 

注:open函数返回的文件描述符一定是最小的未用文件描述符。由于一个进程在启动时自动打开了

012 三个文件描述符,因此,该文件运行结果中返回的文件描述符为3。读者可以尝试在

调用open函数之前,加依据close(0),则此后在open函数时返回的文件描述符为0(若关闭文

件描述符1,则在执行时会由于没有标准输出文件而无法输出)。

阅读(3365) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~