linux学习--第四天(Linux文件操作)

--linux文件操作

        文件IO操作包括:

        (注:I:input(输入)O:output(输出)

            open打开

            close关闭

            read读取

            write写入

            lseek定位

        (文件IO都是基于俩个设备进行的)

-文件描述符

        程序运行后,操作系统默认打开三个文件,分别是:

            标准输入        描述符:       对应设备一般为键盘

            标准输出        描述符:1        对应设备一般为显示屏

            标准错误输出        描述符:2        对应设备一般为显示屏

-linux标准IO

        -标准IO和文件IO

            标准IO是另外一套IO接口,具有如下特点:

                1. 标准IO是属于跨平台,可以在linux,windows,mac os上运行,文件IO只能在linux平台运行

                2. 标准IO自带缓冲区,有更高的IO效率

                3. 标准IO提供丰富的操作文本信息的接口

                   但是,标准IO底层需要依赖于文件IO,标准IO是属于glibc库的一部分

        -流与FILE对象

        流的概念

            :流(stream)是一串连续不断的传输的数据的集合,就像水管里的水流,在水管的一端一点一点的供水,而在水管的另一端看到的是一股连续不断的水流

        

        流的分类

            文本流二进制流

        标准IO的缓冲区

            stdout的缓冲区属于行缓冲

            stderr的缓冲区属于不缓冲

            stdin的缓冲区属于全缓冲

        缓冲区强制刷新

            程序在结束时,会自动刷新缓冲区,当程序未结束时,想强制刷新缓冲区,则需要调用fflush()函数

        -获取系统时间

            在linux中获取主要需要以下俩个步骤:

                1.通过time()函数获取从1970至今的秒数

                2.通过localtime()函数或者ctime()函数 

-库原理与制作

           程序在编译时分为多个阶段:

                1.预处理

                   处理所有预处理命名,包括宏定义,条件编译指令,文件包含指令

                2.编译

                   进行词法分析、语法分析,语义分析后,将.i文件编译为汇编文件(.s)

                3.汇编

                   将汇编指令翻译为机器指令,也就是二进制,形成目标文件(.o)

                4.链接

                   将多个目标文件进行链接,得到一个程序最后的执行文件

        -静态库

           函数库:函数库是实现某一类功能的若干个函数的集合

           静态库:静态库时函数库二进制文件的一种形式,在Windows与Linux下对应的文件格式:

                Windows: xxx.lib

                Linux:lib xxx.a

           特点:

                1.程序体积较大,当编译器链接静态库的时候,会将库函数接口实现代码拷贝到可执行文件中

                2.方便移植,运行程序不需要库的存在,因为程序中已经包含了库函数的实现代码(但是,库函数发生任何改变,都需要重新编译程序

        -相关命令

                ar  -rc  libmath.a  add.o  sub.o 用于将目标文件打包为静态库

                -r(replace) 若静态库文件中的目标文件有所更新,则用新的目标文件替换旧的目标文件

                -c(create) 建立静态库文件

                -t列出静态库中的文件

                -v显示详细的信息

        -动态库

                动态库的特点:

                   1.动态库在程序编译时并不会被连接到目标代码中,而是在程序运行时才被载入,因此在程序运行时还需要动态库存在;
                   2.动态库只有在程序执行时, 那些需要的函数代码才被拷贝到内存中。这样就使可执行文件比较小, 节省磁盘空间;
                   3.由于运行时要去链接库会花费一定的时间,执行速度相对会慢一些;
                   4.动态库是牺牲了时间效率,换取了空间效率

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值