1. fopen 打开普通文件 带缓冲区 缓冲文件系统是借助文件结构体指针来对文件进行管理,通过文件指针来对文件进行访问,既可以读写字符、字符串、格式化数据,也可以读写二进制数据。 函数原型:FILE * fopen(const char * path,const char * mode); 所需库:<stdio.h> 参数说明: mode有下列几种形态字符串: r+ 以可读写方式打开文件,该文件必须存在。 rw+ 读写打开一个文本文件,允许读和写。 wb 只写打开或新建一个二进制文件;只允许写数据。 wb+ 读写打开或建立一个二进制文件,允许读和写。 ab+ 读写打开一个二进制文件,允许读或在文件末追加数据。 at+ 打开一个叫string的文件,a表示append,就是说写入处理的时候是接着原来文件已有内容写入,不是从头写入覆盖掉,t表示打开文件的类型是文本文件,+号表示对文件既可以读也可以写。 2. open 打开设备文件 不带缓冲区 非缓冲文件系统依赖于操作系统,通过操作系统的功能对文件进行读写,是系统级的输入输出,它不设文件结构体指针,只能读写二进制文件,但效率高、速度 快 函数原型:int open(const char *pathname, int flags); int open(const char *pathname, int flags, mode_t mode); 所需库:<fcntl.h> 返回值:成功则返回文件描述符,否则返回 -1; 参数说明: 对于open函数来说,第三个参数仅当创建新文件时(即 使用了O_CREAT 时)才使用,用于指定文件的访问权限位(access permission bits)。pathname 是待打开/创建文件的POSIX路径名(如/home/user/a.cpp);flags 用于指定文件的打开/创建模式,这个参数可由以下常量(定义于fcntl.h)通过逻辑位或逻辑构成。
打开/创建文件时,至少得使用上述三个常量中的一个。以下常量是选用的:
设置为非阻塞模式
以下三个常量同样是选用的,它们用于同步输入输出
前提下,不等待文件属性更新。
3.popen 打开管道 函数原型:FILE * popen ( const char * command , const char * type ); 所需库:<stdio.h> 返回值:如果调用 fork() 或 pipe() 失败,或者不能分配内存将返回NULL,否则返回标准 I/O 流。 参数说明:type 参数只能是读或者写中的一种,得到的返回值(标准 I/O 流)也具有和 type 相应的只读或只写类型。如果 type 是 "r" 则文件指针连接到 command 的标准输出;如果 type 是 "w" 则文件指针连接到 command 的标准输入。 command 参数是一个指向以 NULL 结束的 shell 命令字符串的指针。这行命令将被传到 bin/sh 并使用-c 标志,shell 将执行这个命令。 |
|
来自: huihaoking > 《linux函数》