首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Linux进程控制【进程程序替换】

    ---- 前言 子进程 在被创建后,共享的是 父进程 的代码,如果想实现自己的逻辑就需要再额外编写代码,为了能让 子进程 执行其他任务,可以把当前 子进程 的程序替换为目标程序,此时需要用到 Linux...外壳中的 bash 就是一个任务处理平台,当我们发出指令,如 ls、pwd、touch 等指令时后,bash 会创建子进程,将其替换为对应的指令程序并执行任务,就能实现各种指令 进程程序替换图解 Linux...\n"); return 0; } 可以看出,函数 execl 中的 命令+选项+NULL 是以 链式 的方式进行传递的 2.2、函数2 execv 替换函数 execv 是以顺序表 vector...子进程和父进程共享一份只读区域的数据,但因为发生了程序替换,触发 写时拷贝 机制,令子进程读取另一块区域的数据 写时拷贝 在只读数据区也能触发,因为不能影响到父进程 ---- 总结 以上就是本篇关于 Linux...进程程序替换的相关内容了,在本文中,我们知道了进行程序替换的目的,学习使用了程序替换相关的七大函数,最后还观察了程序替换后的神奇现象,在学完这些知识后,我们就可以实现一个简单的 bash,体验一下在自己程序中输入指令操控 Linux

    59820

    Linux进程控制——Linux进程程序替换

    前言:Linux进程控制包含了进程终止,进程等待,进程程序替换。走到现在我们也只剩下进程程序替换没介绍了,那么让我们来看看进程程序替换到底是什么!...类型函数 execv其实就是在execl的基础上多了一个指针数组,情况大差不差我们就不具体介绍了!...具体关系如下图: execv 和 execvp: int main() { char *const argv[] = { "ls", "-a", "-l", NULL }.../usr/bin/bash echo "hello Linux" echo "hello world" touch code // test.c int main() { printf("pid...总结 进程程序替换能够让我们只用C语言就可以调用其他任何语言去执行,极大程度上带来了便利,也可以帮助我们完成很多任务,好了,关于Linux进程控制我们先了解到这,下次我们将进入新的章节!

    1.1K10

    审计 Linux 系统的操作行为的 5 种方案对比

    因为其提供了内核层面的支持,所以本质上比起 snoopy(仅封装 execv,execve 系统调用)要更加强大和健全。...忽略指定的工具路径, 只能通过 never 实现, exe 为执行工具的路径, 需要设置其绝对值, 这点没有 snoopy 的 exclude_comm 方便. eBPF 记录方式 eBPF 在较新版本的 Linux...内核中实现,提供了动态追踪的机制,可以阅读之前的文章 Linux 系统动态追踪技术介绍了解更多动态追踪相关的知识。...值得注意的是,eBPF 仅适用于 Linux 4.1+ 的版本,以 eBPF 开发的进度的来看,eBPF 在 kernel-4.10 之后的支持才相对全面,线上在使用的时候尽量选择较高内核版本的发行版(...来源:http://blog.arstercz.com/how-to-audit-linux-system-operation/

    2K20

    OpenHarmony 移植案例与原理 - build lite源码分析 之 hb命令__main__.py

    param_list.append(hb_dir) os.environ['PATH'] = python_dir + ":" + os.getenv('PATH') os.execv...⑵处开始,获取4个变量的值,如下表:变量值说明python_diropenharmony/prebuilts/python/linux-x86/3.9.2/bin包含python3执行文件的目录python_executableopenharmony.../prebuilts/python/linux-x86/3.9.2/bin/python3python3执行文件路径lite_diropenharmony/build/litebuild lite目录hb_diropenharmony.../build/lite/hbentry.py所在的目录⑶处封装要参数列表,要动态执行的脚本EXECV_FRAGMENT,已经在前文解释。...在解释动态执行python代码片段EXECV_FRAGMENT时,提到的sys.argv.pop()就是刚刚添加的这个目录。接下来,⑹处的代码设置环境变量,然后调用函数os.execv来执行。

    31420

    【Linux】进程理解与学习-程序替换

    环境:centos7.6,腾讯云服务器 Linux文章都放在了专栏:【Linux】欢迎支持订阅 相关文章推荐: 【Linux】冯.诺依曼体系结构与操作系统 【Linux】进程理解与学习Ⅰ-进程概念...【Linux】进程理解与学习Ⅱ-进程状态 【Linux】进程理解与学习Ⅲ-环境变量 【Linux】进程理解与学习Ⅳ-进程地址空间 【Linux】进程控制(创建、终止、等待) --------...举例: ​  execv int execv(const char *path, char *const argv[]); 该函数我们发现,之前的l变成了v,实际上其实就是用了一个函数指针数组,将之前的..."ls","-a","-l"的地址放进数组里,数组最后一位元素为NULL,然后将该指针数组的起始地址(数组名),当作execv的第二个参数。...char *file, char *const argv[]); 对于该函数: 返回值:替换失败返回-1 file:程序名,会根据程序名自动搜索在PATH中对应的路径 argv[]:指针数组,用法同execv

    1.3K30

    【Linux系统编程】(十八)Linux 进程创建与终止进阶:等待机制与程序替换的底层密码

    前言 在 Linux 进程的生命周期中,创建(fork)与终止(exit/_exit)只是 “开场” 和 “落幕”,而进程等待与程序替换则是连接两者的核心 “剧情”。...(NULL); printf("父进程:子进程执行完毕\n"); } return 0; } 编译执行: gcc exec_execv.c -o exec_execv.../exec_execv execv 与 execl 的区别在于参数传递方式:execl 逐个传入参数,execv 将参数存入数组传入,适用于参数数量较多的场景。...这四大环节环环相扣,构成了 Linux 进程控制的核心逻辑,也是 shell、服务器等核心应用的底层支撑。...掌握这些知识,不仅能帮助我们编写更高效、健壮的 Linux 程序,还能让我们深入理解操作系统的资源管理与调度机制。

    10310

    进程程序替换

    函数列表对比 函数名 参数格式 搜索PATH 环境变量 典型应用场景 execl 列表 否 继承 已知完整路径 execlp 列表 是 继承 常用命令调用 execle 列表 否 自定义 需要特殊环境 execv...NULL }; execle("/app/myprogram", "myprogram", "-debug", NULL, env); 最后一个参数是环境变量数组 完全替换原环境变量 4. execv...:数组参数版本 int execv(const char *path, char *const argv[]); // 示例:动态构建参数 // 命令行参数表,实际上是一个指针数组 char *args..., NULL}; execve("/bin/bash", args, new_env); 使用man 2查询,说明是系统级函数 其他的exec函数是通过语言封装的系统调用,使用man 3查询 Linux...或者使用execve char *args[] = {"program", "-a", "-b", NULL}; execve("/path/to/program", args, new_env); linux

    38500
    领券