#Linux系统编程(exec函数族)

(一)发行版:Ubuntu16.04.7


(二)记录:

(1)为什么介绍exec函数族

在父进程fork()创建子进程中,子进程会拷贝父进程的代码,但是有时候不想要子进程拷贝父进程的代码,则需要引入exec函数族。

(2)exec函数原型

在Linux中并没有exec函数,而是有6个以exec开头的函数族,下面列举了exec函数族的6个函数成员的函数原型:

(3)exec函数族能够更换程序的原因

“换核不换壳”,exec不换创建新进程,但是会换进程里面的执行代码。

(4)调用exec函数族的情况

a.当进程认为自己不能再为系统和用户做出任何贡献时,就可以调用任何exec函数让自己重生。

b.如果一个进程想执行另一个程序,那么他就可以调用fork函数新建一个进程,然后调用一个exec函数使子进程重生。

(5)使用execl换核

a.创建一个c文件,编译生成可执行文件(即图中hello 会打印hello world.)

b.在上篇文章代码基础上增加

    //子进程
	if(pid==0)
	  {
		execl("/home/samba/process/hello","hello",NULL);
	    exit(1);       
	//	printf("This is a child process,child_pid: %d\nparent_pid: %d\n",getpid(),getppid());
	  }

在子进程中增加execl函数换核,第一个参数为可执行文件的绝对路径,第二个参数可执行文件的名字。 

c.编译运行

(6)换核换自有的命令

    //子进程
	if(pid==0)
	  {
	//	execl("/home/samba/process/hello","hello",NULL);
        execl("/bin/ls","ls","-al",NULL);
	    exit(1);       
	//	printf("This is a child process,child_pid: %d\nparent_pid: %d\n",getpid(),getppid());
	  }

 -al为传给ls的命令


(三)命令:

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
int main(void)
{
	pid_t pid;
	pid=fork();
	if(pid<0){
		printf("fork is error.\n");
		return -1;
	}

	//父进程
	if(pid>0)
		printf("This is a parent process,parent_pid: %d\n",getpid());
    //子进程
	if(pid==0)
	  {
	//	execl("/home/samba/process/hello","hello",NULL);
        execl("/bin/ls","ls","-alh",NULL);
	    exit(1);       
	//	printf("This is a child process,child_pid: %d\nparent_pid: %d\n",getpid(),getppid());
	  }
	return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

c语言--实用调试技巧

1什么是bug 2调试是什么&#xff0c;有多重要&#xff1f; 3debug与release 4windows环境调试简绍 5一些调试的实例 6如何写出好的代码&#xff08;便于调试&#xff09; 7编程常见错误 1什么是bug 导致计算机出现问题就叫bug 2调试是什么&#xff0c;有多重要&#x…

【JavaEE初阶系列】——多线程案例一——单例模式 (“饿汉模式“和“懒汉模式“以及解决线程安全问题)

目录 &#x1f6a9;单例模式 &#x1f388;饿汉模式 &#x1f388;懒汉模式 ❗线程安全问题 &#x1f4dd;加锁 &#x1f4dd;执行效率提高 &#x1f4dd;指令重排序 &#x1f36d;总结 单例模式&#xff0c;非常经典的设计模式&#xff0c;也是一个重要的学科&#x…

007 日期类型相关工具类

推荐一篇文章 http://t.csdnimg.cn/72F7Jhttp://t.csdnimg.cn/72F7J

git配置密钥

要配置 Git 密钥&#xff0c;可以按照以下步骤进行操作&#xff1a; 1.生成密钥&#xff1a;首先&#xff0c;在终端或命令提示符中运行以下命令生成密钥对&#xff1a; ssh-keygen -t rsa -b 4096 -C "dengweng-pulse.net"这将生成一个 RSA 密钥对&#xff0c;其中…

clickhouse学习笔记02(小滴课堂)

ClickHouse核心基础-常见数据类型讲解 插入数据&#xff1a; decimal类型的数据&#xff0c;整数部分超了会报错&#xff0c;小数部分超了会截取。 查看表结构&#xff1a; 查询&#xff1a; 插入&#xff1a; 更新操作&#xff1a; 这个和mysql的语句不太一样。 删除语句和my…

第十二届蓝桥杯JavaB组省赛真题 - 货物摆放

解题思路&#xff1a; 暴力 优化前&#xff08;代码没有错&#xff0c;但会超时&#xff09;&#xff1a; import java.util.*;public class Main {public static void main(String[] args) {long n 2021041820210418L;long cnt 0;for (long a 1; a < n; a) {for (lon…

【Java程序设计】【C00364】基于Springboot的美发管理系统(有论文)

基于Springboot的美发管理系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 项目获取 &#x1f345;文末点击卡片获取源码&#x1f345; 开发环境 运行环境&#xff1a;推荐jdk1.8&#xff1b; 开发工具&#xff1a;eclipse以及idea&…

第一天工作我的

工作的第一件事情打开文件信息 开始工作了 太过分了 启动 出现了这样的错误 我这里写的有什么问题吗? computed: {getGroundCtcOptions() {var dis [];for (let i in ctcDataRef.value) {dis.push({label: ctcDataRef.value[i].name,value: ctcDataRef.value[i].id,});}retur…

iPhone 16将接入百度AI功能

关注卢松松&#xff0c;会经常给你分享一些我的经验和观点。 ​百度接了个大活儿&#xff0c;将为国行iPhone 16提供AI功能。这消息一出&#xff0c;基本可以确立百度在AI界领头羊的地位了。百度这些年一直在无人驾驶、AI大模型方面发力&#xff0c;看来还是有成就的&#xf…

第十二届蓝桥杯JavaB组省赛真题 - 路径

解题思路&#xff1a; 动态规划 需要熟练掌握最小公倍数和最大公约数的计算 import java.util.*;public class Main {public static void main(String[] args) {int[] dp new int[2022];dp[1] 0;for (int i 2; i < 2021; i) {dp[i] Integer.MAX_VALUE;}for (int i 1…

【MATLAB源码-第13期】基于matlab的4ASK的误码率BER和误符号率SER理论和实际对比仿真。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 "4ASK" 是一种数字调制技术&#xff0c;代表4级振幅移移键控&#xff08;4-Level Amplitude Shift Keying&#xff09;调制。它是一种数字通信中常用的调制方式之一&#xff0c;用于将数字信号转换为模拟信号以便传…

《量子计算:揭开未来科技新篇章》

随着科技的不断发展&#xff0c;量子计算作为一项颠覆性的技术逐渐走进人们的视野&#xff0c;引发了广泛的关注和探讨。本文将围绕量子计算的技术进展、技术原理、行业应用案例、未来趋势预测以及学习路线等方向&#xff0c;深入探讨这一领域的前沿动态和未来发展趋势。 量子…

c++初阶------c++代码模块

作者前言 &#x1f382; ✨✨✨✨✨✨&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f382; ​&#x1f382; 作者介绍&#xff1a; &#x1f382;&#x1f382; &#x1f382; &#x1f389;&#x1f389;&#x1f389…

档案室升级改造基建方面需要考虑哪些问题

升级和改造档案室可能需要以下材料&#xff1a; 1. 墙壁和地板材料&#xff1a;选择耐用、易于清洁的材料&#xff0c;如瓷砖、大理石、地板、木材或维护低的地毯等。 2. 墙体材料&#xff1a;可能需要新的墙壁材料来分隔出更多的空间&#xff0c;例如石膏板、砖块或玻璃隔断等…

R语言神经网路模型应用(1)

数据集heart_learning.csv与heart_test.csv是关于心脏病的数据集&#xff0c;heart_learning.csv是训练数据集&#xff0c;heart_test.csv是测试数据集。要求&#xff1a;target和target2为因变量&#xff0c;其他诸变量为自变量&#xff0c;用神经网络模型&#xff08;多层感知…

javaWeb私人牙科诊所管理系统

一、摘要 随着科技的飞速发展&#xff0c;计算机已经广泛的应用于各个领域之中。在医学领域中&#xff0c;计算机主要应用于两个方面&#xff1a;一是医疗设备智能化&#xff0c;以硬件为主。另一种是病例信息管理系统&#xff08;HIS&#xff09;以软件建设为主&#xff0c;以…

MySQL 高级语句(一)

一、MySQL查询 1.1 排序 ASC 是按照升序进行排序的&#xff0c;是默认的排序方式&#xff0c;即可以省略&#xff1b; SELECT语句中如果没有指定具体的排序方式&#xff0c;则默认按ASC方式进行排序。 DESC是按降序方式进行排列。当然ORDER BY前面也可以使用 WHFRE 子句对查…

23.异步模式-生产者、消费者

1.与保护性暂停GuardedObject不同&#xff0c;不需要产生结果与消费结果的线程一一对应。 2.消费队列可以用来平衡生产和消费的线程资源。 3.生产者负责产生结果数据&#xff0c;不关心数据该如何处理&#xff0c;而消费者专心处理结果数据。 4.消息队列是有容量限制的&…

风险评估在网络安全领域的应用与实践

一、引言 在数字化浪潮席卷全球的今天&#xff0c;网络安全已成为企业运营和发展的核心问题。随着信息技术的快速发展&#xff0c;企业面临着日益复杂的网络安全威胁&#xff0c;如黑客攻击、数据泄露、恶意软件等。这些威胁不仅可能导致企业重要信息的丢失或泄露&#xff0c;…

2024 年 5 款适用于 Linux 的参考文献管理软件

时间是宝贵的&#xff0c;因此如果某款软件能让您摆脱必须执行的日常繁琐任务&#xff0c;那么它就会派上用场。 参考文献管理工具就是此类软件的典型代表&#xff0c;只需点击几下就能自动格式化引文。学生、教育工作者、作家、科学家和研究人员一定会发现它们非常有用。 在…