做企业网站怎么备案,查询网址在哪里查,论坛网站地图怎么做,兰州新站点seo代理目录 前言 
一.文件操作 
系统调用接口 
1.打开文件 
2.关闭文件 
3.读取文件 
4.写入文件 
二.文件描述符 
重定向 
三.动静态库 前言 在Linux操作系统中#xff0c;文件I/O是一个核心概念#xff0c;涉及如何读写文件、与设备通信以及如何管理数据流。Linux下一切皆文件,  …目录 前言 
一.文件操作 
系统调用接口 
1.打开文件 
2.关闭文件 
3.读取文件 
4.写入文件 
二.文件描述符 
重定向 
三.动静态库 前言 在Linux操作系统中文件I/O是一个核心概念涉及如何读写文件、与设备通信以及如何管理数据流。Linux下一切皆文件,  文件I/O在Linux中有着统一的接口 
一.文件操作 
系统调用接口 
1.打开文件 pathname:  表示要打开的一个文件路径 
flags:  表示打开方式,常用的有以下选项 
O_CREAT:  不存在就创建O_WRONLY: 以读方式打开O_RDONLY:  以写方式打开O_TRUNC:  如果存在就清空O_APPEND:  以追加方式打开 
mode:  表示创建文件的属性 
如果打开成功,  返回一个文件描述符,  打开失败,  返回-1并设置错误码 
2.关闭文件 关闭一个文件描述符 
3.读取文件 从指定的一个文件描述符中读数据 
fd:  文件描述符buf:  读取目的地的起始地址count:  最大读取字节数 
返回实际读取字节数 
4.写入文件 从指定的一个文件描述符写数据 
fd:  文件描述符buf:  写入数据的起始地址count:  最大读取字节数 
返回实际写入字节数 
二.文件描述符 在上述接口,  都依赖于一个叫文件描述符的整形变量,  那么一个整形变量如何表示一个文件,  我们先看看操作系统是如何管理打开的文件的 打开一个文件,  要将这个文件加载到内存,  这个文件也叫内存级文件,  在操作系统中有这些文件的数据结构struct file,  里面包括了这个文件的各项属性,以及读写操作方法,  用特定的数据结构管理这些struct file就实现了对打开的文件的管理 在进程的PCB中,  保存了该进程打开的文件的信息,  struct files_struct 是一个与文件描述符表相关的结构体它包含了文件描述符表的指针、引用计数以及一些用于并发控制的字段 文件描述符表是一个数组存储着所有打开的文件描述符对应的 struct file指针。这些指针指向打开的文件的struct file,  而这个数组的下标就是文件描述符,  通过下标能找到对于的文件 一个进程,  会默认打开三个文件,  标准输入, 标准输出,  标准错误, 它们对应的文件描述符为0/1/2,  然后新打开的文件的文件描述符会继续顺序下去分配 重定向 重定向是指将程序的输入或输出从默认位置如终端转移到其他地方如文件、设备或另一程序的过程,  从文件描述符表来看,  就是将原本的数组里的指针替换,  比如将标准输出重定向到一个文件 
重定向前 重定向后 当我们使用printf,cout之类的接口时,  会默认向标准输出打印,  C/C有自己封装的文件结构,  但其中的属性一定包含了文件描述符,  默认向标准输出打印,  标准输出文件描述符已经被替换为一个文件,  就打印到了文件里 
三.动静态库 
静态库.a静态库是在编译时被链接到目标程序中的库。当程序被编译时静态库中的所有代码都会复制到目标程序中形成一个独立的可执行文件。由于所有库代码在编译时已经被整合到可执行文件中因此运行时不再需要库的存在。动态库.so动态库是在程序运行时被加载的库而不是在编译时被链接到目标程序中。动态库的代码不被复制到可执行文件中而是程序在运行时需要动态库的支持。程序在启动时或在运行过程中动态库会被加载到内存中供程序调用。 
动态库的原理 动态库通过页表可以映射到多个进程的进程地址空间的共享区