| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> Linux学习日记11——fcntl、lseek、传入传出参数 -> 正文阅读 |
|
[系统运维]Linux学习日记11——fcntl、lseek、传入传出参数 |
学习视频链接 黑马程序员-Linux系统编程_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1KE411q7ee?p=58&spm_id_from=pageDriver 目录 一、fcntl 函数1.1 作用改变一个已经打开的文件的访问控制属性 重点掌握两个参数的使用,F_GETFL 和 F_SETFL 1.2 查看函数介绍1、man fcntl 2、fcntl int flags = fcntl(fd, F_GETFL); 获取文件状态:F_GETFL 设置文件状态:F_SETFL flags 的返回值为 -1 表示错误 flags 获取到了 fd 的权限的位图信息 3、位图 flags |= O_NONBLOCK 表示把位图中代表?O_NONBLOCK 的一位从 0 改为 1 使用 fcntl(fd, F_SETFL, flags) 函数再把原来的文件位图覆盖 位图的作用就是节约内存 1.3 测试运行1、代码
2、运行结果 二、lseek?函数2.1 函数简介1、off_t lseek(int fd, off_t offset, int whence) 2、参数 fd:文件描述符 offset:偏移量 whence:起始偏移量:SEEK_SET/SEEK_CUR/SEEK_END 3、返回值 成功:较起始位置偏移量 失败:-1 errno 2.2 测试运行1、代码 2、运行 ?没有写出相应的内容 3、修改代码 ? 2.4 代码逻辑执行了写操作,读写指针的位置指向了最后。现在使用 lseek 把读写指针指向了开头,我们又能使用读写指针来读内容。 2.5 应用场景(1) 文件的 “读”、“写”使用同一偏移位置 (2) 使用 lseek 获取文件大小 (3) 使用 lseek 拓展文件大小,想要使得文件大小真正的拓展,必须引起 IO 操作 1、获取文件大小 ? 2、lseek 拓展文件大小 ? ? ? ?^@:相当于文件空洞,二进制形态为 "\0" 如果编写的时候编程这样也是可以的 write(fd, "\0", 1); 3、二进制形式查看 ? 4、另一个用于拓展的函数 ?执行成功返回 0,并且源文件从 0 字节拓展到 250 字节了 三、Linux 查看文件二进制形式3.1 txt 文件6f —> o e883 —> 胡 a1e5 —> 安 0a —> 换行 20 —> 空格 3.2 .c 文件四、传入传出参数4.1 传入参数1、指针作为函数参数 2、同常有 const 关键字修饰 3、指针指向有效区域,在函数内部做读操作?? 4.2 传出参数1、指针作为函数参数 2、在函数调用之前,指针指向的空间可以无意义,但必须有效 3、在函数内部,做写操作 4、函数调用结束后,充当函数返回值 ? 4.3 传入传出参数1、指针作为函数参数 2、在函数调用之前,指针指向的空间有实际意义 3、在函数内部,先做读操作,后做写操作 4、函数调用结束后, 充当函数返回值 ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 23:33:25- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |