linux应用层open,close,read,write

 

1. open 函数说明
open 函数是用于打开或创建文件,在打开或创建文件时可以指定文件的属性及用户的权限等各种参数。

头文件:
       #include
       #include
       #include

函数原型
int open(const char *pathname,flags,int perms)
pathname:被打开的文件名(可包括路径名)

flag:文件打 开的 方式
O_RDONLY:只读方式打开文件
O_WRONLY:可写方式打开文件
O_RDWR:读写方式打开文件
O_CREAT:如果该文件不存在,就创建一个新的文件,并用第三个参数为其设置权限函数传入值
O_EXCL:如果使用 O_CREAT 时文件存在,则可返回错误消息。这一参数可测试文件是否存在
O_NOCTTY:使用本参数时,如文件为终端,那么终端不可以作为调用 open()系统调用的那个进程的控制终端
O_TRUNC:如文件已经存在,并且以只读或只写成功打开,那么会先全部删除文件中原有数据
O+APPEND:以添加方式打开文件,在打开文件的同时,文件指针指向文件的末尾

perms:被打开文件的存取权限,为 8 进制表示法
函数返回值, 成功:返回文件描述符. 失败:−1

2. close 函数说明

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

所需头文件 #include
函数原型 int close(int fd)
函数输入值 fd:文件描述符
函数返回值   0:成功  −1:出错

3.read 函数是用于将指定的文件描述符中读出数据。当从终端设备文件中读出数据时,通常一次最多读一行。

read 函数的语法格式如下。
所需头文件 #include
函数原型 ssize_t read(int fd,void *buf,size_t count)
fd:文件描述符
buf:指定存储器读出数据的缓冲区
count:指定读出的字节数
函数返回值  成功:读到的字节数   0:已到达文件尾    −1:出错
在读普通文件时,若读到要求的字节数之前已到达文件的尾部,则返回的字节数会小于希望读出的字节数。

4.write 函数是用于向打开的文件写数据,写操作从文件的当前位移量处开始。若磁盘已满或超出该文件的长度,则 write 函数返回失败。

write 函数的语法格式如下所示。
所需头文件 #include
函数原型 ssize_t write(int fd,void *buf,size_t count)
fd:文件描述符
buf:指定存储器写入数据的缓冲区
count:指定读出的字节数
函数返回值 成功:已写的字节数 −1:出错
在写普通文件时,写操作从文件的当前位移处开始。

example:

#include
#include
#include
#include
#include
#include
#include

int main(void)
{
int i,fd,size,len;
char *buf="Hello! I'm writing to this file!";
char buf_r[10];
len = strlen(buf);
/*首先调用 open 函数,并指定相应的权限*/
if((fd = open("/tmp/hello.c", O_CREAT | O_TRUNC | O_RDWR,0666 ))<0){
perror("open:");
exit(1);
}
else
printf("open file:hello.c %d\n",fd);
/*调用 write 函数,将 buf 中的内容写入到打开的文件中*/
if((size = write( fd, buf, len)) < 0){
perror("write:");
exit(1);
}
else
printf("Write:%s\n",buf);
/*调用 lsseek 函数将文件指针移到文件起始,并读出文件中的 10 个字节*/
lseek( fd, 0, SEEK_SET );
if((size = read( fd, buf_r, 10))<0){
perror("read:");
exit(1);
}
else
printf("read form file:%s\n",buf_r);
if( close(fd) < 0 ){
perror("close:");
exit(1);
}
else
printf("Close hello.c\n");
exit(0);
}

你可能感兴趣的:(linux应用层open,close,read,write)