基础IO
文章平均质量分 63
小丑小丑小丑
这个作者很懒,什么都没留下…
展开
-
动态库和静态库
文章目录静态库和动态库静态库动态库动态链接生成库生成静态库生成动态库静态库和动态库库的名字都是去掉lib和后缀之后的才是库名。这点很重要静态库静态库在linux下是.a文件。程序在编译链接的时候把库的代码链接到可执行文件中。程序运行的时候将不再需要静态库。系统角度:静态库是在链接过程被加入到了进程地址空间的代码区。图示:好处:如果编译链接后,把静态库删掉也可以运行。这个程序具有可移植性。坏处:让程序变得超级大,原因也很简单,就是因为加入了很多代码。动态库动态库在linux下是以.so原创 2022-02-27 20:43:44 · 456 阅读 · 0 评论 -
理解inode
文章目录磁盘构成磁盘存储的映射inode和data block(重点)inode bitmapblock bitmapinode tabledata table查找文件的示意图(重点)创建新文件需要的操作(重点)为什么明明还有空间,却创建不了文件创建目录需要的操作删除文件需要的操作目录文件与inode硬链接文件信息中的硬链接数软链接文件信息中的三个时间a c minode是文件系统里面的一个数据结构。注:这里讲的文件是硬盘级文件,而不是被加载进内存被进程管理的进程级文件磁盘构成磁盘是一种机械设备,原创 2022-02-27 18:20:21 · 1485 阅读 · 0 评论 -
系统文件接口open
系统文件接口open介绍man手册介绍参数1:文件路径名字,一般都是当前路径打开,直接输入文件名即可重点:参数2:flags – 表示你要选择以哪种方式打开,常用有以下几种O_TRUNC --- 清空文件 open truncatedO_WRONLY --- 只写打开 open write onlyO_RDONLY --- 只读打开 open read onlyO_APPEND --- 追加打开 open appendO_CREAT --- 若文件不存在,创建一个新的注原创 2022-02-26 20:36:56 · 805 阅读 · 0 评论 -
如何解释linux下一切皆文件的观点
先讲一下系统是如何管理文件的。如管理进程一般,管理文件也是有一堆数据结构来管理的。管理文件里面有一个叫file_struct的结构体。看一下内核代码:代码很长,截了一小段而已。里面有一个成员类型很有趣,叫struct file_operations,我们可以看一下里面是什么。我们惊奇的发现:里面是一堆函数指针,也就是说,linux内核把函数放进了结构体里面。这不就是面向对象的思想吗!先说结论:确实是面向对象思想,linux把所有硬件,目录,文件等都当成文件对象来管理了。这还是一种多态!大致原创 2022-02-26 22:01:48 · 1348 阅读 · 0 评论 -
文件描述符file description
文章目录文件描述符文件描述符概念进程如何用fd管理文件文件描述符分配规则重定向关于重定向的一些问题文件描述符文件描述符概念我们要打开文件时,文件被加载进内存当中,此时文件是被进程管理着的。进程对文件的管理同样也是用数据结构进行管理。这个数据结构名字叫做files_structtask_struct里面有一个指针,指向files_struct.而files_struct里面有一个叫做fd_arrays的东西,这个数组的下标就是文件描述符fd。这个数组里面放着文件指针file*,可以指向文件,管理原创 2022-02-26 21:41:37 · 1542 阅读 · 0 评论 -
dup2使用
头文件:参数:dup2是帮助我们进行重定向的系统调用接口使用方法:把fd_arrays[oldfd]拷贝到fd_arrays[newfd],实现重定向原理:要会使用dup2,要先了解文件描述符fd文件描述符下面这段代码就是不调用dup2接口进行的重定向,本质是把原先指向stdout的fd指向了新打开的文件。使用dup2是这样写的。原理:把新打开的文件的fd拷贝到fd_arrays[1]里面,实现重定向。因此使用dup2的时候,...原创 2022-02-27 16:27:37 · 1014 阅读 · 0 评论