【回眸】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!

全部评论

相关推荐

🥳公司及岗位:京东-跨境事业部-采销&nbsp;(电商运营)🥳本人bg:双非本&nbsp;211工科硕27届,面试时有一段大厂运营实习,现转到产品岗(欢迎想转产品的uu咨询我)1️⃣面试官提问-&nbsp;Q1:若实习,大概什么时候能到岗?-&nbsp;Q2:能实习多久?-&nbsp;Q3:实习中间会有长期请假吗?-&nbsp;Q4:请进行自我介绍。-&nbsp;Q5:你的经历与电商关联度不高,说说对电商和京东的理解。-&nbsp;A5:电商基于线上平台销售,相比线下购物,能让消费者便捷接触商品,及时性是重要优势。京东属货架电商,消费者有需求可搜索选购;目前正从货架电商向“货架+兴趣电商”转型,采销直播是重要体现,采销人员会介绍商品全流程,类似抖音兴趣电商模式。-&nbsp;Q6:结合过往实习案例,举例说明通过个人创意或创新解决的成功项目/事件。-&nbsp;Q7:若处于忙碌工作环境,一天内事务做不完但老板要求日清,如何进行时间管理?-&nbsp;A7:首先拆解工作并按优先级排序,优先完成紧急任务;其次优化重复工作流程,提升效率;最后每日复盘,针对阻力与同事沟通,改善难点以提高后续效率。2️⃣反问-&nbsp;Q1:所在品类组日常工作内容及各工作占比是怎样的?-&nbsp;A1:采销岗需负责“采”“销”全链路工作,KPI主要考核GMV(销售额)、利润,现金流无需重点关注。因品类不同工作重点不同,且个人工作排序有差异,无法统一界定各工作占比。-&nbsp;Q2:该岗位对实习生的期待是什么?-&nbsp;A2:希望实习生尽早独当一面,独立负责品牌、品类相关工作,早日交付结果。-&nbsp;Q3:岗位对实习生在具体能力上有哪些特定要求?-&nbsp;A3:首要能力是沟通与谈判能力(需频繁对接合作方);其次是数据分析与逻辑能力,对工作开展至关重要。
查看7道真题和解析
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务