进程操作函数:fork.execl的应用—对文件进行的修改进行自动备份

Linux sudo权限滥用与防御:20种提权技术深度解析 在Linux系统管理中,权限控制是安全的核心基础。sudo机制作为普通用户执行特权命令的关键桥梁,其设计原理基于最小权限原则,通过/etc/sudoers配置文件实现精细化的命令授权。这项技术的核心价值在于平衡操作便利性与系统安全性,广泛应用于服务器运维、开发环境管理等场景。然而,配置不当的sudo规则可能成为严重的安全隐患,攻击者可能通过环境变量注入、shell转义程序滥用等技术手段实现权限提升。本文聚焦sudoers配置漏洞,系统剖析包括LD_PRELOAD注入、PATH劫持在内的多种提权技术,并给出基 阅读详情

主要思想:

       对文件进行监视,如果发现进行了修改操作(文件的最后访问时间发生变化),就在主进程中通过fork函数建立一个子进程,接着用execl函数加载shell命令cp,完成对修改后文件的备份。

 

     代码:(附有详细的注释)

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

int main(int argc,char* argv[])
{
    int fd;                     //文件描述符
    struct stat statbuf;        //保存文件的状态变量
    time_t oldtime;             //记录文件上一次修改的时间
    int pid,state;              //pid用于保存创建的子进程号

    if(3!=argc)                  //检查参数是否合法
    {
        printf("Arguments error!\n");
        exit(0);
    }

    if((fd=open(argv[1],O_RDONLY))==-1)         //以只读方式打开要监视的文件
    {
        printf("Open file: %s error!",argv[1]);
        exit(0);
    }

    fstat(fd,&statbuf);                 //获取要监视的文件当前的状态信息
    oldtime=statbuf.st_mtime;           //将此状态信息保存起来供以后参考

    for(;;)
    {
        fstat(fd,&statbuf);              //获取新的文件状态信息
        if(oldtime!=statbuf.st_mtime)     //比较看现在保存的修改时间是否和以前的一致
        {                         //不一致说明有修改,开始备份操作
            while((pid=fork())==-1);     //创建新的进程
            if(pid==0)
            {
                execl("/bin/cp","/bin/cp",argv[1],argv[2],0); //通过调用execl函数加载新的程序
                //即相当于在shell里执行: cp argv[] argv[2]
                return 0;   //操作完成后杀死这个子进程
            }
            wait(&state);      //父进程等待子进程的终止
            oldtime=statbuf.st_mtime;  //记录新的修改时间以备下次使用
        }
        else
        {
            sleep(30);      //如果未对目标文件进行修改,父进程则进行30s的休眠
        }
    }
    return 0;
}


OTA 更新系统完整教程 plaintextuint8 command # 0=更新, 1=回滚plaintextint32 progress # 0-100 进度string version # 版本号(如 v1.0.6)string message # 中文描述Step 6 — 手动重启地面站收到"更新完成,请重启以加载新版本"后,操作员远程登录机载执行:bash运行Step 7 — 验证(可选)重启后登录机载检查:bash运行# 查看当前版本# 检查 uav_update 是否正常运行# 查看更新日志表格。 阅读详情

相关推荐

告别Socat踩坑:用Docker + xinetd在CTFd上部署Pwn靶场的保姆级教程(附端口映射避坑指南)

对于特殊需求,可修改ctf.xinetd:wait = noport = 80instances = 100 # 最大并发数per_source = 3 # 单IP最大连接重要参数调整指南:instances:根据服务器配置设置per_source:防止暴力破解wait:必须为no以实现并发。

aof26372的博客 431

linux系统编程---进程:exec族和fork配合使用---学习和记录(七)

exit(-1);*p = '8';close(fd);return 0;

weixin_74133504的博客 451

如何使用JMeter进行大模型的压力测试?

使用JMeter进行大模型的压力测试,核心是通过模拟高并发请求,测试大模型在极限负载下的性能表现(如响应时间、吞吐量、错误率、资源瓶颈等)。通过以上步骤,可系统性评估大模型在高压下的性能极限,为优化模型(如量化、蒸馏)、扩容硬件(增加GPU)或调整接口限流策略提供数据依据。)、请求方式(POST)、认证方式(API Key放在Header)、请求参数(作用:避免瞬间高压压垮系统,更精准找到瓶颈点。等)、响应格式(同步/流式)。需获取:API地址(如。通过CSV文件引入不同。

alankuo的专栏 789

fork()和execl()结合使用的用法

直接使用execl()而不先fork()的话,程序会立即替换当前进程的执行上下文,这意味着如果execl()失败,当前进程会直接终止,而不是返回到调用execl()的地方。资源隔离:fork()创建了一个新的进程,这意味着子进程有自己的地址空间和资源,即使execl()执行的程序出现问题,也不会影响到父进程。安全性:在某些场景下,父进程可能需要以不同的权限或身份执行特定任务,fork()和execl()可以实现这种切换,例如在子进程中以root权限执行/bin/remount。

日拱一卒,玉汝于成 655

【生成C01/C10材料常数excel表】

计算橡胶件的邵尔硬度和C01/C10材料常数

weixin_46153372的博客 1934

CST仿真微带贴片天线学习笔记

谐振频率为3.48GHz,基板采用Rogers RT5880板材,介电常数2.2,损耗角正切0.0009,厚度1.57mm,馈电方式为同轴馈电。

qq_36521926的博客 9432

fork与execl配合使用

开发中常常遇到启动线程导致当前进程处于阻塞状态而出现异常,这时可以通过fork创建子进程来实现,而execl可以一些shell命令而不阻塞主进程;

nihaoma95278的博客 614

基于Simulink的永磁同步电机三闭环(位置/速度/电流)伺服仿真

本文详细介绍了基于Simulink的永磁同步电机三闭环伺服控制系统的设计与实现,针对机器人关节控制场景。系统采用位置环(外环)、速度环(中环)和电流环(内环)的嵌套结构,通过精确的带宽匹配(电流环1kHz、速度环200Hz、位置环20Hz)实现亚微米级位置跟踪。文中提供了完整的Simulink建模步骤,包括主电路搭建、三环PI控制器实现及坐标变换模块,并验证了系统性能:阶跃响应时间35ms,位置误差<0.05°,正弦跟踪误差<0.15°,负载突加恢复时间0.08s。最后提出了参数自适应整定、前馈

amy_mhd的博客 279

嵌入式学习之linux系统编程---14 进程控制(fork、execl命令)

1、fork函数—创建进程的函数 fork函数: 头文件:#include <unistd.h> 函数原型:pid_t fork(void) fork函数的返回值: fork函数的返回值有三种,(1)创建失败,则fork返回一个负值;(2)若创建成功,则在父进程中,fork返回新创建的子进程的pid号;同时,在子进程中,fork函数返回0值。 2、fork函数例程 要求:让进程a(父进程)去创建新的进程b(子进程) #include <unistd.h> #include <

qq_42822743的博客 3107

Allegro技巧----相同模块复用实现快速布局

使用Allegro软件进行PCB Layout设计时,当电路图中有很多路相同的模块,使用模块复用的的操作方法,可以显著提高工作效率,同时也可以使PCB布局在整体上显得美观。 如图,有8个相同的ADC采样电路模块,它们在原理图中的电路也是一样的,对于这多个相同的电路模块,如果一个个元器件布局很明显做了很多重复机械的劳动,效率低下;但是强大的Allegro软件早就考虑到了这点,只需要在PCB中做好其中的一个,则其余相同的模块通过复用的方式,可以快速完成,方便省事还美观。 具体步骤: 1.首先完成一个模块的PC

sinat_15677011的博客 5655

Qt入门教程100篇(已完结)

Qt5入门教程,Qt6入门教程。包含了: Qt环境搭建篇、Qt数据类型篇、Qt中STL篇、Qt核心篇、Qt核心对象QObject篇、Qt基础控件篇、Qt对话框篇、Qt高级控件篇、Qt数据模型篇、QSS篇、Qt文件篇 、Qt硬件编程、Qt的一些demo、Qt项目开发篇。......

小鱼酱的博客 15万+

fork和execl

此去经年,应是良辰好景虚设。便纵有,千种风情,更与何人说。——柳永《雨霖铃》 最近在实现一个对开发板进行截屏的功能,其中用到了execl函数,下面就先介绍一下execl函数吧。execl函数用来执行某条命令。 execl函数包含于 #include 中,他是这样定义的: int  execl(const char *path, const char *arg, ....);

Peter_tang6的博客 2713

深度强化学习在足式机器人中的应用 (一):基础原理与仿真环境

我们将首先深入探讨其背后的核心挑战与技术栈,然后详细推导机器人学和强化学习的基本数学原理,特别是剖析在机器人控制领域表现卓越的PPO算法。下面的独立Python脚本展示了Isaac Gym的基本API用法,加载一个Go1机器人(假设URDF已准备好),并让它执行一个简单的预设动作(正弦波运动),以此来熟悉仿真流程。:代码的核心是直接操作GPU上的PyTorch张量,避免了CPU和GPU之间的数据拷贝,这是实现高性能的关键。:所有计算(如伪策略中的正弦波计算)都应该是向量化的,一次性为所有。

VectorShift的博客 228

深入解析Linux进程控制:从fork-exec到容器隔离的核心机制

在操作系统中,进程是程序执行的基本单元,它代表了正在运行的程序实例及其资源集合。其核心原理在于操作系统通过进程控制块(PCB)等数据结构来管理进程的创建、执行、切换与终止,实现CPU时间片轮转和资源分配。理解进程控制的技术价值在于,它是实现系统稳定性、资源隔离和多任务并发的基石,直接影响系统性能和安全性。在应用场景上,从基础的Shell命令执行、后台服务守护进程,到现代容器技术(如Docker)所依赖的Namespace和Cgroups资源隔离机制,都深度构建于进程控制之上。本文聚焦于Linux环境下的进程

weixin_30719711的博客 448

CVPR 2026 即插即用 | 注意力篇 | MSEF:超轻注意力,空间-通道双分支并行融合,既增强特征又抑制噪声!

Multinex提出了一种超轻量级微光图像增强框架,其核心创新是MSEF模块。MSEF采用双分支并行架构,结合空间局部特征(深度可分离卷积)和全局通道注意力(改进SE),通过Tanh激活实现特征增强与抑制。相比传统注意力模块,MSEF在几乎不增加计算量的情况下显著提升性能,特别适合轻量级网络和边缘设备部署。实验表明,该模块能有效提升PSNR约3dB,同时保持极低的参数量(0.7K-45K)。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 604

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

c语言如何通过修改文件的方式配置 Linux 网络参数

首先需要定义修改的文件路径和新的配置信息,然后打开文件并写入新的配置信息,其中包括静态 IP 地址、子网掩码和网关地址。接着执行重启命令,使用。需要注意的是,修改网络配置文件时要谨慎,避免出现语法错误或配置错误导致网络故障。建议在修改之前备份原始配置文件,以便在出现问题时恢复到原始状态。重启后,新的配置信息将会生效。请注意,这个示例仅供参考,具体实现需要根据实际情况进行调整。示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。创建子进程,子进程使用。

shufawangzhang的博客 1101

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Figma 工程化实践:从汉化字体到 API 与 MCP 的避坑指南

在数字化产品协作中,设计工具早已不只是画板,而是连接设计与开发的工程化基础设施。Figma 作为协同设计平台,其核心价值在于通过统一的组件、样式与变量,将视觉语言转化为可复用、可交付的资产。然而,实际落地时常因英文界面、字体不同步、插件选型不当等问题受阻。理解其运行原理——如本地字体助手机制、插件沙箱权限、REST API 与 MCP 协议的数据流转——能帮助团队从被动救火转向主动治理。应用场景涵盖设计系统维护、图标批量导出为 JSON、AI 编程助手读取设计稿等。当开发者能通过 API 或 MCP 直接获

weixin_34401479的博客 344

Linux

多线程、shell语句、网络编程、mysql数据库、git远程仓库以及redis数据库与缓存的总结性学习

2601_94965056的博客 575

Linux c frok出三个子进程各做所事,父进程回收所有子进程(fork、execl、execlp、wait、waitpid)

文章目录1、函数介绍2、需求,代码 1、函数介绍 1、fork()函数:创建子进程 pid_t fork(void); 无参数 返回值: (pid_t 类型其实就是一个整型) 成功: 父进程返回,子进程id 子进程返回,0 失败: -1 设置errno 2、execl()函数,execlp()函数:执行可执行文件,和系统命令 int execl(char* path,const char *arg,...); 参数: path 可执行文件路径 arg 可以是多个,可以通过下面

weixin_45715405的博客 1581

Linux--文件描述-内存申请与管理-fork()与execl联合创建进程

文件描述符-内存申请与管理-fork()与execl联合创建进程代码

学习-记录-分享创造价值 734

linux/UNIX中如何使用fork函数调用exec函数族,实现子进程做特定操作

linux/UNIX中如何使用fork函数调用exec函数族,实现子进程做特定操作

qq_46017342的博客 1766

fork函数和exec族函数的结合使用 的案例

首先回顾之前所讲,在说明“”的时候,提到过以下两个原因:其中第一个原因很好理解,并且不管是之前的博文还是上节的exec,都提到了一点“exec族函数通常会和fork一起使用,从而实现在原程序运行时,创建一个新进程来执行不同的程序的效果所以本节来演示。

mjmmm的博客 420

进程控制函数(fork、getpid、execl)

进程控制

qq_41864116的博客 1372

Linux进程——exec族函数、exec族函数与fork函数的配合

然后再调用execl,用execl 找到并执行echoarg,将当前进程main替换成进程echoarg,就会执行ehcoarg里面的代码,所以”after execl” 没有在终端被打印出来。不会执行if中的代码。可见echoarg存在于当前路径并不存在于bin路径下,所以调用execl函数无法找到echoarg并执行echoarg,调用失败返回值为-1,则会继续执行if函数里的代码。定义一个指针数组并将其地址作为execvp函数后面的参数,同时要以NULL结尾,便可以找到并执行ls可执行文件。

2301_78772787的博客 2460

Linux系统编程-进程-2 fork、execlp、execl、wait、waitpid

创建一个子进程 返回值:-1 失败 、 等于0表示子进程 、 大于0表示父进程的id获取当前进程的id获取当前进程的父进程id获取当前进程实际用户id获取当前进程使用用户组id。

m0_74068116的博客 275
上一篇: 字符串模式匹配——KMP算法
下一篇: 广义表的实现
SmarterYu
博客等级 码龄14年 36粉丝 48原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值