【linux】内核文件创建以及写文件

在测试创建文件时,测试发现需要提升内存访问权限到 KERNEL_DS。内核使用系统调用参数肯定是内核空间,为了不让这些系统调用检查参数所以必须设置set_fs(KERNEL_DS)才能使用该系统调用。记录一下

#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/fs.h>
#include <linux/uaccess.h>static mm_segment_t old_fs;int test(void)
{int ret;struct file *filp;mm_segment_t old_fs;loff_t pos;const char *filename = "/path/to/file.txt";const char *content = "Hello, world!\n";/* 保存当前的内存访问权限级别 */old_fs = get_fs();/* 提升内存访问权限到 KERNEL_DS */set_fs(KERNEL_DS);/* 使用 filp_open() 创建文件 */filp = filp_open(filename, O_CREAT | O_RDWR, 0644);if (IS_ERR(filp)) {ret = PTR_ERR(filp);pr_err("Failed to create file '%s': %d\n", filename, ret);goto restore_fs;}/* 写入文件内容 */ret = kernel_write(filp, content, strlen(content), &pos);if (ret < 0) {pr_err("Failed to write to file '%s': %d\n", filename, ret);goto close_file;}pr_info("File '%s' created successfully.\n", filename);close_file:/* 关闭文件 */filp_close(filp, NULL);restore_fs:/* 恢复内存访问权限 */set_fs(old_fs);return ret;
}

保存当前的内存访问权限级别到 old_fs 变量。
提升内存访问权限到 KERNEL_DS。
使用 filp_open() 以写入模式创建文件。
使用 kernel_write() 将内容写入文件。
关闭文件。
最后将内存访问权限恢复到之前保存的级别。

参考:
https://www.cnblogs.com/friedCoder/articles/12375700.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/869113.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用zip命令压缩大文件并分割,再合并成单个文件的操作指南

在处理大型文件&#xff08;如超过100GB的文件&#xff09;时&#xff0c;直接进行压缩和传输可能会遇到存储或网络带宽的限制。为了更有效地管理这些文件&#xff0c;我们可以先将它们使用zip命令进行压缩&#xff0c;然后使用split命令将压缩后的文件分割成多个较小的部分&am…

linux宝塔负载状态100%解决办法

宝塔面板负载状态显示100% 接着使用top命令查看了一下&#xff0c;发现cpu利用率很低&#xff0c;load却很高 通过使用 ps -axjf命令查看是否存在D状态进程 D 状态是指不可中断的睡眠状态&#xff0c;该状态的进程无法被 kill&#xff0c;也无法自行退出&#xff0c;只能通过恢…

使用各向异性滤波器和图像处理方法进行脑肿瘤检测(MATLAB)

医学图像分割一直以来都是计算机辅助诊断领域的研究热点。在医学图像的处理和分析中&#xff0c;对图像中感兴趣区域的准确分割尤其关键。要对感兴趣区域进行分类识别&#xff0c;首先要从图像中把感兴趣区域精确分割出来&#xff0c;然后有针对性地对感兴趣区域提取特征并分类…

【FFmpeg】avcodec_send_packet函数

目录 1.avcodec_send_packet1.1 解码入口函数&#xff08;decode_receive_frame_internal&#xff09;1.1.1 软解入口&#xff08;decode_simple_receive_frame&#xff09; FFmpeg相关记录&#xff1a; 示例工程&#xff1a; 【FFmpeg】调用ffmpeg库实现264软编 【FFmpeg】调…

植物大战僵尸杂交版全新版v2.2解决无法打开问题和全屏问题

解决无法打开问题 如我的电脑是windows11的系统。 1.打开windows安全中心&#xff0c;点击病毒和威胁防护。 如图&#xff1a; 2.点击管理设置。 3.把实时保护给关掉&#xff0c;就行了。 如图&#xff1a; 然后就可以打开了。 解决无法全屏的问题 1.右键植物大战僵尸的快捷…

如何在OpenFOAM的案例文件夹中确定数据的点和面,确定点和网格之间的关系,从而用于深度学习预测和构建模型呢(分析数据格式及其含义)

在OpenFOAM中&#xff0c;点&#xff08;points&#xff09;和面&#xff08;faces&#xff09;的定义是通过不同的文件来进行的。在案例一级目录下面的constant/polyMesh目录下&#xff0c;会有points, faces, owner, neighbour等文件&#xff0c;来描述网格的几何和拓扑结构。…

快速上手文心一言:让创作更轻松

引言 在当今信息爆炸的时代&#xff0c;如何高效地进行内容创作成为了许多人的关注焦点。百度推出的文心一言&#xff0c;作为一款强大的AI写作工具&#xff0c;为内容创作者提供了全新的解决方案。本文将带您快速上手文心一言&#xff0c;让创作变得更轻松、更高效。 什么是…

收银系统源码-消息通知功能解析

智慧新零售收银系统是一套线下线上一体化收银系统&#xff0c;给商户提供含线下收银称重、线上商城、精细化会员管理、ERP进销存、丰富营销活动、移动店务助手等一体化的解决方案。 功能详情见下文&#xff1a; 门店收银系统源码-CSDN博客文章浏览阅读2.6k次&#xff0c;点赞…

【深度学习】图形模型基础(5):线性回归模型第五部分:多变量线性回归模型

1.引言 当我们从基础的线性模型 y a b x error y a bx \text{error} yabxerror 转向更复杂的模型 y β 0 β 1 x 1 β 2 x 2 … error y \beta_0 \beta_1 x_1 \beta_2 x_2 \ldots \text{error} yβ0​β1​x1​β2​x2​…error 时&#xff0c;我们面临了诸多…

3. kvm虚拟网络

kvm虚拟网络 一、虚拟网卡1、虚拟网卡驱动2、添加网卡3、删除网卡 二、虚拟网络1、NAT模式1.1 SNAT 1.2 DNAT 端口映射2、桥接bridge模式 一、虚拟网卡 1、虚拟网卡驱动 2、添加网卡 [rootmartin-host ~]# virsh attach-interface vm01_centos79 --type network --model virt…

书生大模型实战营(暑假场)-入门岛-第一关

书生大模型实战营暑假场重磅开启&#xff01;&#xff0c;这场学习路线看起来很好玩呀&#xff0c;闯关学习既能学到知识又有免费算力可得&#xff0c;太良心啦。感兴趣的小伙伴赶快一起报名学习吧&#xff01;&#xff01;&#xff01; 关卡任务 好的&#xff0c;我们废话不多…

Java基础语法--基本数据类型

Java基础语法–基本数据类型 Java是一种静态类型语言&#xff0c;这意味着每个变量在使用前都必须声明其数据类型。Java提供了多种基本数据类型&#xff0c;用于存储整数、浮点数、字符和布尔值等。以下是Java中的基本数据类型及其特点&#xff1a; 1. 整型&#xff08;Integ…

Qt常用基础控件总结—旋转框部件(QSpinBox类和QDoubleSpinBox类)

旋转框(微调按钮)部件 QAbstractSpinBox 类 QAbstractSpinBox 类介绍 QAbstractSpinBox 类是 QWidget 类的直接子类,虽然该类不是抽象类,但该类并未提供实际的功能,仅为旋转框提供了一些外观的形式以及需要子类实现了成员,也就是说点击微调按钮的上/下按钮,不会使其中的…

一键式创建GTest TDD测试平台

适用于C GTest测试平台搭建。直接上python脚本。 #!/usr/bin/env python3 # -*- coding: utf-8 -*-import argparse import os import platform import subprocess from xml.etree import ElementTree as ETdefault_root_path "d:\\test\\UTtest"class DeveloperTe…

常用Dos命令

学过Linux的shell命令的就很好理解&#xff0c;dos命令就是windows系统里面的命令&#xff0c;但是我们很少用&#xff0c;因为有图形化的界面&#xff0c;譬如&#xff1a;可以直接点击创建文件&#xff0c;在文件里面写东西&#xff0c;当然也可以通过终端执行命令创建文件&a…

.NET MVC强类型参数排除和包含属性 Bind 、Exclude

Bind(Include“属性”); 如果相包含多个属性可以用逗号分割符分开&#xff1a;Bind(Include“属性1,属性2,属性n”) 同理&#xff0c;如果想排除一个或多个属性可以使用 Bind(Exclude“属性”) / Bind(Exclude“属性1,属性2,属性n”) 实际应用中添加一个对象对于ID自增的实体…

【算法代码】标准差+正态分布画图+置信区间画图

正态分布画图置信区间 标准差公式如下置信区间图像如下画出置信区间的代码 标准差公式如下 标准差&#xff08;Standard Deviation&#xff09;&#xff0c;中文环境中又常称均方差&#xff0c;但不同于均方根误差&#xff08;meansquared error&#xff0c;均方根误差是各数据…

22.状态机设计--可乐机设计(投币三元出一瓶可乐)

理论知识&#xff1a; &#xff08;1&#xff09;状态机简写为FSM&#xff08;Finite State Machine&#xff09;&#xff0c;也称为同步有限状态机。同步是指状态的变化都是在时钟的边沿发送变化&#xff0c;有限值得是状态的个数是可数的。 &#xff08;2&#xff09;分类&…

7/8 复盘

后端数据传输&#xff1f; 后端代码的耦合&#xff1a;打点调用、方法调用、接口、继承。 Dao、Service、servlet(controller)各层的作用&#xff1f; Dao负责与数据库交互&#xff0c;执行SQL语句&#xff0c;例如简单的增删改查等等。&#xff08;要创建对应的接口和实现类…

图形渲染基础-Unity渲染管线介绍

Unity中的渲染管线渲染场景主要分为三个阶段 剔除&#xff08;Culling&#xff09; 剔除摄像机不可见对象&#xff08;视锥体剔除Frustum Culling&#xff09;和被遮挡对象&#xff08;遮挡剔除Occlusion Culling&#xff09;。 渲染&#xff08;Rendering&#xff09; 将可见…