设计师怎么做响应式网站重庆有哪些做网站的公司
文章目录
- 一、系统调用
 - 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 | 当指定文件可写或者可读时产生一个信号(默认SIGIO) | 
| O_CREAT | 当指定的name文件不存在时,将由内核来创建 | 
| O_DIRECT | 打开文件用于直接I/O | 
| O_DIRECTORY | 如果name不是目录,open()调用将会失败,这个标志用于opendir()内部使用 | 
| O_EXCL | 和O_CREAT一起给出的时候,如果name给定的文件已经存在,则open()调用失败,用来防止文件创建时出现竞争 | 
| O_LARGEFILE | 给定文件打开时使用64位偏移量,这样大于2G的文件也能被打开 | 
| O_NOFOLLOW | 如果name是一个符号链接,open()调用会失败 | 
| O_NONBLOCK | 如果可以,文件将在非堵塞模式下打开 | 
| O_SYNC | 打开文件用于同步IO | 
| O_TRUNC | 如果文件存在,且为普通文件,并允许写,将文件的长度截断为0 | 
1.3 示例代码
以打开 /etc/services 文件为例
#include <iostream>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>using 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;} 
效果图:
 
