北京网站设计 培训,如何做一个自己的网页,杭州注册公司流程是怎样的,深圳网站建设啊文章目录 一、系统调用1.open()1.1 所需基础知识1.2. open() 详解1.3 示例代码 二、标准IO三、高级IO 一、系统调用
1.open()
1.1 所需基础知识 Linux遵循一切皆是文件的理念#xff0c;因此#xff0c;很多的交互工作都是通过读取和写入文件来完成。 文件必须被打开才能被… 文章目录 一、系统调用1.open()1.1 所需基础知识1.2. open() 详解1.3 示例代码 二、标准IO三、高级IO 一、系统调用
1.open()
1.1 所需基础知识 Linux遵循一切皆是文件的理念因此很多的交互工作都是通过读取和写入文件来完成。 文件必须被打开才能被访问。文件可以以只读方式或者只写方式打开或者两者兼有。一个打开的文件通过唯一的文件描述符进行引用该描述符是打开文件的元数据至其本身的映射。在Linux内核中这个描述符用一个整数表示 (int) 简写为fd。文件描述符在用户空间中共享允许用户程序用文件描述符直接访问文件。 1.2. open() 详解
#include sys/types.h
#include sys/stat.h
#include fcntl.h//调用成功返回文件描述符失败返回-1int open (const char* name, int flags);int open (const char* name, int flags, mode_t mode);
flags参数必须是一下之一
参数含义O_RDONLY只读O_WRONLY只写O_RDWR读写模式 flags参数可以和以下一个或多个值进行按位或运算用以修改打开文件请求的行为。
参数含义O_APPEND追加模式打开文件位置指针将被置于文件末尾O_ASYNC当指定文件可写或者可读时产生一个信号默认SIGIOO_CREAT当指定的name文件不存在时将由内核来创建O_DIRECT打开文件用于直接I/OO_DIRECTORY如果name不是目录open()调用将会失败这个标志用于opendir)内部使用O_EXCL和O_CREAT一起给出的时候如果name给定的文件已经存在则open()调用失败用来防止文件创建时出现竞争O_LARGEFILE给定文件打开时使用64位偏移量这样大于2G的文件也能被打开O_NOFOLLOW如果name是一个符号链接open()调用会失败O_NONBLOCK如果可以文件将在非堵塞模式下打开O_SYNC打开文件用于同步IOO_TRUNC如果文件存在且为普通文件并允许写将文件的长度截断为0
1.3 示例代码
以打开 /etc/services 文件为例
#include iostream
#include sys/types.h
#include sys/stat.h
#include fcntl.husing namespace std;int main()
{int fd;fd open(/etc/services,O_RDONLY);if(fd -1){cerr open() failed;}else{cout open success endl;cout fd fd endl;}return 0;}
效果图
二、标准IO
三、高级IO