Linux 系统 I/O编程-----不带缓存的I/O操作
2013-04-14 15:43
239 查看
linux的I/O操作分为:
不带缓存的I/O操作(read(),write(),open(),lseek(),close())。
标准(带缓存)的I/O操作:(fgets(),fread(),fwrite()).
文件描述符:
首先,在LINUX中对目录和设备都等同与于文件操作,LINUX中的文件主要分为:普通文件,目录文件,链接文件和设备文件,那么系统是怎么区分和引用特定的文件的呢?
文件描述符---对LINUX而言,所有对设备和文件的操作都通过使用文件描述符进行的,在open已经存在的文件或者creat一个新的文件时,内核就会向进程返回一个文件描述符,以后要对该文件的操作都可以通过使用该文件描述符(将文件描述符做为参数传递给相应的读(read(),写write()函数)来进行.
在lINUX系统中一个进程启动时都会打开3个文件:标准输入,标准输出,标准出错处理,分别对应文件描述符为0,1,2(宏替换STDIN_FILENO,STDOUT_FILENO,STDERR_FILENO)
不带缓存操作的I/O操作函数:
1 open函数
功能:打开一个已经存在的文件或者创建一个新的文件. 函数原型如下
#include <fcntl.h>
int open(const char *pathname,int oflag,mode_t mode);
返回值:
成功:返回文件描述符
出错:返回-1
pathname:要打开或者要创建的文件名,
oflag: O_RDONLY 只读打开
O_WRONLY 只写打开
O_RDWR 读写方式打开
以上三个常量必须指定一个且只能指定一个
O_APPEND 每次写时都追加到文件的未端
O_CREAT 若打开的文件不存在,则创建一个新文件,使用这个选项时,第三个参数mode指定创建新文件时的文件权限
LINUX的文件权限: r 可读取 w可写入 x可执行 -无权限
文件权限的表示: 10个字符表示.如drwx------
第一位:表示文件的类型
第二位到第四位:表示文件所有者的访问权限
第五位到第七位:表示文件所有者同组用户访问的权限
第八位到第十位:表示其它用户的访问权限
新建文件的默认权限=新建文件的约定权限(linux 文件的约定权限是0666)-umask表示的权限
新建目录的默认权限=新建目录的约定权限(LINUX目录的约定权限是0777) - umask表示的权限
O_TRUNC 如果文件存在,而且为只写或者读写的方式打开,则将文件的长度截短为0
O_NOCTTY 如果pathname指的是终端设备 则不将这个设备作为此进程的控制终端
O_NONBLOCK 如果pathname指的是一个FIFO,一个块特殊文件或者一个字符特殊文件,则此选项为文件的本次打开操作和后续的I/O操作设置非阻塞模式
O_DSYNC
O_RSYNC
O_SYNC
不带缓存的I/O操作(read(),write(),open(),lseek(),close())。
标准(带缓存)的I/O操作:(fgets(),fread(),fwrite()).
文件描述符:
首先,在LINUX中对目录和设备都等同与于文件操作,LINUX中的文件主要分为:普通文件,目录文件,链接文件和设备文件,那么系统是怎么区分和引用特定的文件的呢?
文件描述符---对LINUX而言,所有对设备和文件的操作都通过使用文件描述符进行的,在open已经存在的文件或者creat一个新的文件时,内核就会向进程返回一个文件描述符,以后要对该文件的操作都可以通过使用该文件描述符(将文件描述符做为参数传递给相应的读(read(),写write()函数)来进行.
在lINUX系统中一个进程启动时都会打开3个文件:标准输入,标准输出,标准出错处理,分别对应文件描述符为0,1,2(宏替换STDIN_FILENO,STDOUT_FILENO,STDERR_FILENO)
不带缓存操作的I/O操作函数:
1 open函数
功能:打开一个已经存在的文件或者创建一个新的文件. 函数原型如下
#include <fcntl.h>
int open(const char *pathname,int oflag,mode_t mode);
返回值:
成功:返回文件描述符
出错:返回-1
pathname:要打开或者要创建的文件名,
oflag: O_RDONLY 只读打开
O_WRONLY 只写打开
O_RDWR 读写方式打开
以上三个常量必须指定一个且只能指定一个
O_APPEND 每次写时都追加到文件的未端
O_CREAT 若打开的文件不存在,则创建一个新文件,使用这个选项时,第三个参数mode指定创建新文件时的文件权限
LINUX的文件权限: r 可读取 w可写入 x可执行 -无权限
文件权限的表示: 10个字符表示.如drwx------
第一位:表示文件的类型
第二位到第四位:表示文件所有者的访问权限
第五位到第七位:表示文件所有者同组用户访问的权限
第八位到第十位:表示其它用户的访问权限
新建文件的默认权限=新建文件的约定权限(linux 文件的约定权限是0666)-umask表示的权限
新建目录的默认权限=新建目录的约定权限(LINUX目录的约定权限是0777) - umask表示的权限
O_TRUNC 如果文件存在,而且为只写或者读写的方式打开,则将文件的长度截短为0
O_NOCTTY 如果pathname指的是终端设备 则不将这个设备作为此进程的控制终端
O_NONBLOCK 如果pathname指的是一个FIFO,一个块特殊文件或者一个字符特殊文件,则此选项为文件的本次打开操作和后续的I/O操作设置非阻塞模式
O_DSYNC
O_RSYNC
O_SYNC
相关文章推荐
- Linux 系统 I/O编程-----不带缓存的I/O操作
- 无缓存文件编程API,Linux下对文件的分类详解,Linux下常用文件编程函数,不带缓存的I/O操作
- Linux 系统编程学习-文件I/O操作
- Linux下的C编程实战(二)――文件系统编程
- socket编程的最简单实例 - linux系统编程及驱动开发 - 小超嵌入式工作室 嵌入式开发学习交流论坛 XC-STC XC2440技术支持 - Powered by Discuz!
- Linux下的C编程实战之文件系统编程
- [linux] C语言Linux系统编程-socket开发
- Linux系统编程---线程概念
- Linux 系统应用编程——标准I/O
- linux系统编程之文件与I/O(三):目录的操作
- Linux系统编程——线程池
- 八、Linux系统编程-进程(一)进程概念、进程数据结构、进程状态变迁、进程创建和撤销
- 【Linux系统编程】特殊进程之守护进程
- [Linux 系统编程] container_of 的一点总结
- Linux系统下的多线程编程入门四
- 关于Linux系统编程的错误处理:errno、perror、strerror
- LinuxC/C++编程基础(33) 视频包缓存的实现(续1)
- 二、linux IO 编程---系统调用和POSIX标准和标准IO
- linux 系统编程学习经验