【回眸】技术干货——Linux内核(二)对文件的操作

Linux内核(二)对文件的操作(创建、写入、关闭)

写入文件 关闭文件

查找 close()、write()的头文件

首先找头文件,在原来的几个头文件下添加close()、write()函数需要的头文件和该函数的用法

在终端中分别输入

man 2 close
man 2 write

查清用法之后可以照着写,但是会发现几个问题

(1)两个函数需要加的头文件是一样的

(2)write()函数更复杂一些,close()只需要传入fd即可

(3)仿写开始,首先要初始化一个 const void *buf 无类型指针,我们要写入的是字符串,所以这里用char *buf

(4)write()传入的第三个参数是size_t count,这时候我们不能用sizeof(buf),因为 sizeof(buf)空间有限,所以我们回归本源,使用计算char长度的 strlen()

(5)使用strlen()需要注意这里也要头文件

查找strlen()的头文件

man strlen

找到需要应用的头文件,复制到原来的头文件下面

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>

思路

//1.打开(什么方式)

//2.打印文件描述符

//3.如果打开失败(fd=-1)以可读写的方式再来一次

//4.记得加上或操作方便创建新文件,新文件的权限可以写0600

//5.内循环判断文件描述符大于0,打印创建成功

//6.写入(文件描述符,buf,buf长度)

//7.关闭(文件描述符)

实例1:

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>

int main(){
    //定义要写入的内容
    char *buf = "pjy!yyds!by鸭鸭";
    int fd;
        fd = open("./file1",O_RDWR);
            if(fd == -1){
                printf("file open error!\n");
                //如果file1不存在,创建一个file1
                fd = open("./file1",O_RDWR|O_CREAT,0600);
                    if(fd > 0)
                    {
                        printf("create file1 sucessfully!\n");
                    }
            }
        //如果已经存在file1,打印一句话并写入*buf的内容
        printf ("open file1 successfully!&fd = %d\n",fd);
        write(fd,buf,strlen(buf));
        //关闭上述文件
        close(fd);
        return 0;
}

结果1:

打开file1文件,会发现*buf的内容全部写入成功

总结易错点:

1、选择用sizeof()来计算buf的大小,这样得出来的结论是4 或者8,这是一个很常见的面试题,32位机的指针大小就是4字节,64位机的指针大小就是8字节

2、所以需要选用strlen()才更合适,但是使用strlen()需要添加头文件string.h我有一次没加这个头文件

3、使用write()函数时,传入的第二个参数应该为buf ,而非*buf

#实习必须要去大厂吗?##我的秋招日记##秋招有哪些公司要求提前实习#
应届生必学实用物联网技术 文章被收录于专栏

本专栏助应届生从物联网小白成长为企业争抢的技术人才,聚焦三大核心技术:传感器应用(环境监测)、嵌入式开发(STM32/Arduino)、通信协议(LoRa/NB-IoT/MQTT),配合10+实战项目(如智能温湿度监控系统)积累项目经验。覆盖智能硬件、工业物联网、智能家居领域岗位需求,解析企业招聘技术重点与面试题,帮电子、计算机、自动化等专业学生构建知识体系,提前锁定名企Offer!

全部评论

相关推荐

不愿透露姓名的神秘牛友
03-19 10:38
实力求职者:真的绷不住了,第一张霸总人设,第二张求生欲拉满
点赞 评论 收藏
分享
找工作勤劳小蜜蜂:自我描述部分太差,完全看不出想从事什么行业什么岗位,也看不出想在哪个地区发展,这样 会让HR很犹豫,从而把你简历否决掉。现在企业都很注重员工稳定性和专注性,特别对于热爱本行业的员工。 你实习的工作又太传统的it开发(老旧),这部分公司已经趋于被淘汰,新兴的互联网服务业,比如物流,电商,新传媒,游戏开发和传统的It开发有天然区别。不是说传统It开发不行,而是就业岗位太少,基本趋于饱和,很多老骨头还能坚持,不需要新血液。 工作区域(比如长三角,珠三角,成渝)等也是HR考虑的因素之一,也是要你有个坚定的决心。否则去几天,人跑了,HR会被用人单位骂死。
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
正在热议
更多
# 大厂实习和小厂实习最大的区别是什么? #
2608次浏览 21人参与
# 参加完秋招的机械人,还参加春招吗? #
119973次浏览 761人参与
# 米连集团26产品管培生项目 #
14520次浏览 291人参与
# 牛友の3月总结 #
2050次浏览 31人参与
# 这些公司卡简历很严格 #
95240次浏览 417人参与
# 面试被问到不会的问题,你怎么应对? #
744次浏览 8人参与
# 开放七大实习专项,百度暑期实习值得冲吗 #
18880次浏览 309人参与
# 拼多多工作体验 #
52720次浏览 342人参与
# 研究所VS国企,该如何选 #
259081次浏览 2013人参与
# 通信硬件知识分享 #
48147次浏览 538人参与
# 找AI工作可以去哪些公司? #
17245次浏览 761人参与
# 从事AI岗需要掌握哪些技术栈? #
15031次浏览 857人参与
# 你做过最难的笔试是哪家公司 #
47704次浏览 768人参与
# 实习最想跑路的瞬间 #
130967次浏览 740人参与
# 金三银四,你的春招进行到哪个阶段了? #
24644次浏览 300人参与
# 说说你知道的学历厂 #
391016次浏览 1379人参与
# AI面会问哪些问题? #
36439次浏览 1086人参与
# 想给25届机械人的秋招建议 #
47745次浏览 251人参与
# 机械人避雷的岗位/公司 #
62887次浏览 395人参与
# 大厂无回复,继续等待还是奔赴小厂 #
343379次浏览 1988人参与
# 滴!实习打卡 #
814727次浏览 6858人参与
# 我心目中的理想工作是这样的 #
100879次浏览 907人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务