概述
open()函数介绍:
1.open( )函数需要包含的头文件:
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
2.open()函数的形式:
int open(const char* pathname, int oflag,.../*, mode_t mode * / )
3.open()函数的参数说明:
open()函数成功则返回文件描述符,失败则返回-1。第一个参数是文件的路径,第二个参数是文件的权限,第三个参数只有新建文件时才填写,用8进制的数(与umask有关)代表新建文件的权限。
open()函数的第二个参数:
在open函数中,我们将第三个参数写为. . .,这是ANSI C说明余下参数的数目和类型可以变化的方法。对于o p e n函数而言,仅当创建新文件时才使用第三个参数。p a t h n a m e是要打开或创建的文件的名字。o f l a g参数可用来说明此函数的多个选择项。用下列一个或多个常数进行或运算构成o f l a g参数(这些常数定义在< f c n t l . h >头文件中):
• O_RDONLY 只读打开。打开文件只做读操作(read())
• O_WRONLY 只写打开。(write())
• O_RDWR 读、写打开。
在这三个常数中应当只指定一个。下列常数则是可选择的:
• O_APPEND 每次写时都加到文件的尾端。(原子操作)
• O_CREAT 若此文件不存在则创建它。使用此选择项时,需同时说明第三个参数m o d e,用其说明该新文件的存取许可权位。mode值及如何修改mode值将在后面讨论。
• O_EXCL 如果同时指定了O_CREAT,而文件已经存在,则出错。这可测试一个文件是否存在,如果不存在则创建此文件成为一个原子操作。
• O_TRUNC 如果此文件存在,而且为只读或只写成功打开,则将其长度截短为0。
• O_NOCTTY 如果pathname指的是终端设备,则不将此设备分配作为此进程的控制终端。
• O_NONBLOCK 如果pathname指的是一个FIFO、一个块特殊文件或一个字符特殊文件,则此选择项为此文件的本次打开操作和后续的I / O操作设置非阻塞方式。
• O_SYNC 使每次write都等到物理I / O操作完成,即数据已经写到硬盘才返回。没有O_SYNC选项,则把数据写到缓冲区就返回,缓冲区会在合适的时候把缓冲区的数据一起写到硬盘,这样会减少操作硬盘的次数。
实例代码
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
int main(){
int fd, ret;
/*打开文件
fd = open("example.text", O_RDWR);
if(fd == -1){
perror("open file:");
exit(1);
}
printf("fd = %dn", fd);
ret = close(fd); //close函数成功返回0,失败返回-1
printf("ret = %dn", ret);
if(ret == -1){
perror("close file:");
exit(1);
}
*/
/*创建新文件,0777是8进制的数代表权限,文件真正的权限是0777与umask掩码(取反)相与
fd = open("hello.text", O_RDWR | O_CREAT, 0777);
if(fd == -1){
perror("creat file");
exit(1);
}
printf("new file: fd = %dn", fd);
ret = close(fd);
if(ret == -1){
perror("close file");
exit(1);
}
printf("close file succesn");
*/
/*检查文件是否存在。文件存在就会报错
fd = open("hello world.text", O_RDWR | O_CREAT | O_EXCL);
if(fd == -1){
perror("open file:");
exit(1);
}
printf("creat filen");
*/
//截断文件,就是格式化
fd = open("hello.text", O_RDWR | O_TRUNC);
if(fd == -1){
perror("fail");
exit(1);
}
printf("succesn");
}
最后
以上就是拉长月亮为你收集整理的Linux文件编程常用函数详解——open()函数open()函数介绍:实例代码的全部内容,希望文章能够帮你解决Linux文件编程常用函数详解——open()函数open()函数介绍:实例代码所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复