`

Linux/Unix C 编程: 标准I/O函数(1) fopen函数,fclose函数

阅读更多
#include <stdio.h>
FILE *fopen(const char* pathname, const char* type);
0fopen函数调用内核open函数取得一个文件描述符,对于open 函数打开文件时,返回的是文件描述符,而对于标准I/O库fopen,对文件操作是用 流 来进行的,当使用fopen打开或创建一个文件时,即为使一个流与一个文件相关联,fopen返回的是FILE结构体的地址,FILE结构体包含有文件描述符,I/O缓冲区,读写位置等信息。

pahtname 为文件路径和文件名的字符串,type 为打开方式,值如下:
r :文件必须已经存在,为读而打开。

r+:文件必须已经存在,为读和写而打开。

w:创建文件或为写打开文件,如果文件存在则会清空原文件内容。

w+: 创建文件或为读和写而打开文件,如果文件存在则会清空原文件内容。

a:追加,即在文件尾加入内容,或为写而创建文件。

a+:在文件尾写内容,或者为读和写而创建文件。

另外,以二进制方式打开文件时,在type中同时加上b,如 rb,r+b,rb+,w+b,ab+等,则以二进制方式进行读写,如果不加b,则以文本方式打开文件。而UNIX环境不区分文本和二进制方式,所以在UNIX下加b并无作用。

int fclose(FILE *fp);

fclose 函数关闭一个流,其调用内核 close 关闭流对应的文件描述符。如果此时I/O缓冲区还有数据,则调用内核 write 写到到文件中,再调用 close,然后释放FILET 缓冲区。当进程终止而没有显示调用fclose时,所有未写入的缓冲区的数据将会被写入,并关闭所有打开的流。
分享到:
评论

相关推荐

    linux/unix系统编程手册附录代码

    - `fopen()`, `fclose()`: C标准库中的文件操作函数,与系统调用相对应。 - `pipe()`, `fifo()`: 创建管道和命名管道,实现进程间通信。 - `dup()`, `dup2()`: 复制或重定向文件描述符。 - `ioctl()`: 对I/O设备...

    Linux/UNIX系统编程手册

    1. **系统调用接口**:Linux/UNIX系统编程的核心是系统调用接口,它提供了与操作系统交互的入口。如打开、关闭文件(open, close)、读写数据(read, write)、创建新进程(fork, execve)等。 2. **进程管理**:...

    LinuxC_C语言_Linux/Unix编程_Dot._

    4. **标准I/O库和文件操作**:掌握C语言中的标准输入输出和文件操作函数,如fopen、fclose、fgets、fprintf等。 5. **进程和线程**:理解进程的概念,学习fork、exec、wait系列函数,以及多线程编程的原理和pthread...

    精通UNIX下C语言编程与项目实践+源代码+笔记.zip_C语言项目linux_Linux/Unix编程_Linux下的c语言开

    3. **文件操作**:C语言提供了打开、关闭、读写文件的函数,如`fopen()`, `fclose()`, `fread()`, `fwrite()`等,而在UNIX中,还有`open()`, `close()`, `read()`, `write()`等系统调用来进行更底层的控制。...

    Linux-UNIX系统编程手册中文版.rar

    《Linux-UNIX系统编程手册中文版》是一本深入讲解Linux和UNIX系统编程的权威指南,其特点是内容详尽且组织清晰。这本书对于那些希望深入了解操作系统内部工作原理、掌握系统编程技术的开发者来说,无疑是一份宝贵的...

    linux unix系统编程手册书上代码

    `fopen()`和`fclose()`是C标准库中的高级接口,提供了更灵活的选项。`chmod()`改变文件权限,`chown()`改变所有者,`link()`和`unlink()`分别用于创建硬链接和删除文件。 4. **文件描述符和I/O复用**:文件描述符是...

    Unix/Linux C编程函数大全(完整版)中文版

    1. **标准I/O库**:包括`printf`、`scanf`、`fopen`、`fclose`等,用于处理标准输入、输出和文件操作。例如,`printf`用于格式化输出,`scanf`用于格式化输入,`fopen`用于打开文件,`fclose`用于关闭文件。 2. **...

    Linux-C-programming.rar_Linux/Unix编程_Visual_C++_

    1. **文件I/O**:C语言提供了丰富的文件操作函数,如`fopen()`, `fread()`, `fwrite()`, `fclose()`等,用于读写文件。 2. **系统调用**:如`fork()`, `exec()`, `wait()`, `pipe()`, `socket()`等,用于进程创建、...

    linux高性能服务器编程.zip_Linux/Unix编程_C/C++__Linux/Unix编程_C/C++_

    文件I/O在服务器编程中也十分常见,fopen(), fread(), fwrite()和fclose()等函数用于读写文件,而文件描述符的read(), write()等系统调用则可以与网络I/O结合使用。 最后,考虑到性能,TCP的缓冲区管理和Nagle算法...

    linux unix 函数手册

    - `fopen()`, `fclose()`: C标准库中的文件操作函数,提供更高的抽象层。 - `seek()`系列:如`lseek()`, 改变文件指针的位置。 3. **文件描述符和I/O复用**: - `select()`, `poll()`, `epoll()`: 多路复用I/O...

    IVibra.rar_Linux/Unix编程_Unix_Linux_

    在Linux中,文件I/O通常使用标准库函数如`fopen()`, `fread()`, `fwrite()`, `fclose()`等进行。 3. **信号处理**:"Vibra"可能涉及到进程间的通信或事件响应,这可能会用到Unix/Linux的信号机制,如`signal()`, `...

    UNIX/LINUX平台C函数库手册

    在UNIX和LINUX操作系统中,C函数库是编程的基础,为开发者提供了丰富的系统调用和标准库函数。这篇手册详细介绍了这些函数库,是C语言学习者和实践者的重要参考资料。下面将对其中的关键知识点进行深入阐述。 1. **...

    BufferedReaderTest.rar_Linux/Unix编程_Unix_Linux_

    1. **文件I/O操作**:在C语言中,`fopen`, `fclose`, `fgets`, `fprintf`等函数是进行文件操作的基础。`BufferedReaderTest.c`可能包含了如何打开一个文件,设置读模式,并使用缓冲区来读取数据的示例。 2. **缓冲...

    root.rar_Linux/Unix编程_Unix_Linux_

    - 使用标准的文件I/O函数(如`fopen()`, `fread()`, `fclose()`)操作`/proc`文件。 - 由于`/proc`文件内容通常是文本格式,但不遵循标准的行结束符规则,解析时需特别处理。 - 对于只读的`/proc`文件,应当避免尝试...

    Linux_UNIX系统编程手册(上)

    4. **系统调用与库函数**:介绍系统调用(如open、read、write、close等)与C库函数(如fopen、fclose、fread、fwrite等)的区别和使用场景。 5. **进程间通信(IPC)**:深入讨论进程间的同步和互斥,如互斥锁、...

    StatusOutputStream.rar_Linux/Unix编程_Unix_Linux_

    源代码可能使用了标准C库中的函数,如`fopen`、`fprintf`、`fclose`等。同时,考虑到这是系统级编程,可能还涉及到`unistd.h`头文件中的函数,如`write`、`read`等。此外,可能会使用到错误处理机制,如`perror`或...

    c_function.pdf.zip_Linux/Unix编程_PDF_

    C语言的标准库包含了大量的函数,如`stdio.h`中的输入输出函数(`printf`、`scanf`),`string.h`中的字符串处理函数(`strcpy`、`strlen`),`math.h`中的数学函数(`sqrt`、`pow`)等,这些都是C编程的基础。...

    osc_internal.rar_Linux/Unix编程_Unix_Linux_

    1. **文件I/O**:C语言在Linux/Unix下通过标准库函数如`fopen()`, `fclose()`, `read()`, `write()`等进行文件操作,同时也可使用系统调用如`open()`, `close()`, `read()`, `write()`等直接与内核交互。 2. **进程...

Global site tag (gtag.js) - Google Analytics