linux软件编程----文件io

一、文件io

        1.打开文件:open

                返回值:成功返回文件描述符,失败返回-1;

                文件描述符的范围:3~1023;(总是取尚未被占用的最小的非负整数)

                0:stdin:标准输入;

                1:stdout:标准输出;

                2:stderr:标准出错;

           flags:打开的方式

                O_RDONLY        只读
                O_WRONLY        只写
                O_RDWR          读写 

                O_APPEND        追加
                O_ASYNC         异步IO
                O_CREAT         创建
                O_EXCL          检测文件是否存在
                O_NONBLOCK      非阻塞IO
                O_TRUNC         截断(清0)

        2.读写文件:read/write         

        3.关闭文件:close

二、标准io和文件io的区别:

        1.应用场景:

                (1)标准io主要用来操作普通文件;

                (2)文件io主要用来操作设备文件以及除普通文件以外的其余文件类型;

        2.有无缓冲:

                (1)标准io是一种有缓冲的io;

                (2)文件io是一种没有缓冲的io;

                缓存的分类:

                        (1)全缓存:缓存区满,刷新缓存区(与文件建立的缓存一般为全缓存)

                                刷新条件:

                                        (1)存满4k刷新;

                                        (2)程序结束刷新(fclose刷新);

                                        (3)fflush函数强制刷新;

                        (2)行缓存:与终端建立的缓存一般为行缓存;

                                刷新条件:

                                        (1)遇到'\n'刷新;

                                        (2)存满1K刷新;

                                        (3)同全缓存的2,3;

                        (3)不缓存:人机交互、界面控制、出错处理

                                刷新条件:直接刷新

        3.本质:

                (1)标准io是库函数,在linux和windows平台均能使用;

                (2)文件io是系统调用,只有在Linux内核平台中才能使用;

                系统调用:Linux内核中的代码;

                库函数:针对操作系统内核中代码的封装;

三、问题:

        1.strstr函数:查找目标字符串在源中第一次出现的位置,返回值为指针;

        2.ftruncate函数:删除文件中的所有内容;

        3.tail命令:

                tail命令用于按照要求将指定的文件的一部分输出到标准设备,一般是终端

                tail [-f][-c Number|-n Number|-m Number|-b Number|-k Number][File]                

                参数说明:

  •  -f 该参数用于监视File文件增长。
  • -c Number 从 Number 字节位置读取指定文件。
  • -n Number 从 Number 行位置读取指定文件。
  • -b Number 从 Number 表示的512字节块位置读取指定文件。
  • File 指定操作的目标文件名。

        4.大小端存储如何转换?      

进行大小端存储转换的方法主要分为以下几种:

  1. 使用系统提供的函数进行转换:一些系统提供了专门用于大小端转换的函数,如htole()、letoh()等,可以直接使用这些函数进行转换。
  2. 手动进行字节交换:对于一些简单的数据类型,可以通过手动交换字节的方式进行大小端转换。例如,对于一个32位整数,可以将第一个字节和第四个字节交换,第二个字节和第三个字节交换,从而实现大小端转换。
  3. 使用位操作进行转换:可以使用位操作来交换字节的位置。例如,对于一个32位整数,可以通过将第一个字节提取出来,然后通过位操作将其与第四个字节交换位置,从而实现大小端转换。

需要注意的是,在进行大小端转换时,需要了解目标系统的字节序,以确保正确地进行转换。同时,对于一些复杂的数据类型,可能需要使用特定的方法来进行大小端转换。

                

                

        

你可能感兴趣的:(linux,运维,服务器)