当前位置:   article > 正文

二、Linux文件 - Open函数讲解实战_o_rdwr 头文件

o_rdwr 头文件

目录

1.Open函数讲解

2.open函数实战

2.1 man 1 ls 查询Shell命令

2.2 man 2 open 查看系统调用函数

2.3项目实战

2.3.1O_RDWR和O_CREAT

 2.3.2O_APPEND的用法



1.Open函数讲解

高频使用的Linux系统调用open   write   read   close

Linux自带的工具:man手册:

man 1是普通的shell命令,例如 ls    输入:man 1 ls

man2是系统调用函数,比如open,write说明    输入:man 2 open

在Linux系统库的定义:

  1. int open(const char *pathname, intflags); /*比较常用*/
  2. int open(const char *pathname, intflags, mode_tmode);
  3. //包含的头文件
  4. #include <sys/types.h>//这里提供的类型pid_t和size_t的定义
  5. #include <sys/stat.h>
  6. #include <fcutl.h>

返回值

  • 成功,返回句柄,我们后面对于文件的读写,关闭等都通过句柄来操作。
  • 失败,返回-1

参数说明

  • grep -nr "xxxx" ./   可以通过这个指令来查找底层的宏O_RDONLY。
  • pathname:文件的路径名,如果只写文件名,就默认当前目录,如果在文件名加上路径,就按照绝对路径来打开文件。
  • flags:表示打开文件后用的操作
    • 底层是一个宏,它可以以16进制的形式存放。

      O_RDONLY:只读模式0x 0000 0000

      O_WRONLY:只读模式0x 0000 0001

      O_RDWR:可读可写0x 0000 0002

    • 参数说明

    • O_APPEND 表示追加,如果原来文件里面有内容,则这次写入会写在文件的最末尾。0x00002000
    • O_CREAT 表示如果指定文件不存在,则创建这个文件 0x0000 0100
    • O_EXCL 表示如果要创建的文件已经存在,则出错,同时返回-1,并且修改errno的值
    • O_TRUNC 表示截断,如果文件存在,并且以只写、读写方式打开,则将其长度截断为0
    • O_NOCTTY 如果路径名指向终端设备,不要把这个设备用作控制终端

2.open函数实战

2.1 man 1 ls 查询Shell命令

  •  终端输入 man 1 ls,可以看到有名字、参数、描述。-a是ls后面追加的一些参数和对应的用法。q退出。

2.2 man 2 open 查看系统调用函数

  •  终端输入 man 2 open,查看系统调用函数,可以看到有名字、参数、描述。
    • 这是一个调用open 函数的栗子。
  • 在库函数的文件中查找宏:

2.3项目实战

2.3.1O_RDWR和O_CREAT

  1. vi hello.c 打开并创建文本
  2. 写入主函数,:wd退出并保存,看下使用open()函数需要包含的头文件.
  3. 复制所需的头文件,并gg=G自动调整代码。代码写好保存并退出(:wq)
  4. 使用gcc hello.c -o hello 编译并名为hello,生成helllo的可执行文件
  5. ./hello 执行成功。程序会因为找不到 mm 而打印 open failed! 
  6. 而用 touch mm创建一个mm文件。然后再执行./hello,就会打印 open succeed!
  7. 上述是使用路径的方式打开,接下来我们直接使用文件名。修改代码。并重新用gcc编译。
  8. 删除mm 并重新编译代码 发现,也是可以执行成功的。
  9. 再上述的只读(O_RDONLY)基础上追加一个创建(O_CREAT)功能。保存并退出,并重新编译。
  10. 加上此功能后,发现代码运行后自动创建了mm。
  11. ls -l 查看文件权限。

 2.3.2O_APPEND的用法

  1. O_APPEND 表示追加,如果原来文件里面有内容,则这次写入会写在文件的最末尾。使用时,光标默认指向目标文件的末尾。
  2. 代码编译后运行,发现每运行一次代码,file文件里的内容都会在旧的内容后面追加一次。   cat file ,查看file文件里面的内容。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/182992
推荐阅读
相关标签
  

闽ICP备14008679号