Linux--进程控制

进程终止

进程终止是指一个正在运行的进程结束其执行并释放占用的系统资源的过程。进程可以通过以下几种方式终止:

正常终止:进程完成了它的任务,或者遇到了终止条件,例如调用了exit()函数或主函数执行完毕。
异常终止:进程可能会遇到一些异常情况,例如访问非法内存、发生除零错误等。操作系统会接收到这些异常,并强制终止进程。
被其他进程终止:另一个进程可以发送信号给目标进程,要求其终止。例如,在命令行中使用kill命令终止特定进程。
系统终止:操作系统可能需要终止某些进程以保护系统的稳定性,例如当系统资源不足时。

在进程终止时,操作系统会回收已分配给该进程的内存空间、文件描述符、打开的文件等资源,并将进程的退出状态返回给父进程。

在这里插入图片描述

自定义退出码

enum{success=0,open_err,                                                                                                   malloc_err 
};const char* errorToDesc(int code)
{switch(code){case success:return "success";case open_err:return "file open error";case malloc_err:return "malloc error";default:return "unknown error";}
}int Print()
{printf("hello Linux\n");printf("hello Linux\n");printf("hello Linux\n");printf("hello Linux\n");return 0;
}
int main()
{int n=Print();printf("n=%d\n",n);int code=malloc_err;printf("%s\n",errorToDesc(code));return 0;
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

打印出退出码表示的含义

在这里插入图片描述

在这里插入图片描述
举例:
在这里插入图片描述

exit()和_exit()

exit()和_exit()都是用于正常终止进程的函数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

进程等待

进程等待指的是一个进程暂停其执行,直到满足某个条件或事件发生后才会继续执行。在操作系统中,进程可以通过等待来同步和协调与其他进程的操作。

wait

在Linux中,wait()是一个系统调用,是父进程在等待子进程执行完毕之前挂起自身,并等待子进程的终止状态
父进程可以使用wait()等待子进程的终止。当父进程调用wait()时,如果子进程已经终止,则父进程会立即返回,并可以通过子进程的终止状态来了解子进程终止的 原因和状态。

下面来看例子:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

waitpid()

waitpid()是Linux中的一个系统调用,用于等待指定子进程的终止并获取其终止状态。它可以用来在父进程中等待一个特定的子进程或者等待任何子进程的终止。

waitpid()函数的原型如下:

#include <sys/types.h>
#include <sys/wait.h>pid_t waitpid(pid_t pid, int *status, int options);

其中,参数pid指定要等待的子进程的PID,可以有以下几种取值:
-1:等待任意子进程终止。
0:等待与调用进程在同一进程组的任意子进程终止。
大于0:等待指定PID的子进程终止。

参数status是一个指向整型变量的指针,用于存储子进程的终止状态。
参数options用于指定附加的选项,如WNOHANG表示非阻塞方式等待,即如果没有子进程终止立即返回。

例子:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

WIFEIERED

在这里插入图片描述
在这里插入图片描述

非阻塞等待

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

进程替换

进程替换是指在操作系统中将一个正在运行的进程替换为一个新的进程的过程。这个过程包括终止当前进程并加载新的程序代码、数据和资源,使新的进程开始执行。

在Linux中,常用exec()函数族来实现。
包括:

#include <unistd.h>`
int execl(const char *path, const char *arg, ...);
int execlp(const char *file, const char *arg, ...);
int execle(const char *path, const char *arg, ...,char *const envp[]);
int execv(const char *path, char *const argv[]);
int execvp(const char *file, char *const argv[]);

命名理解:

l(list) : 表示参数采用列表
v(vector) : 参数用数组
p(path) : 有p自动搜索环境变量PATH
e(env) : 表示自己维护环境变量

接下来看它们的使用

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

多进程替换

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

金融CRM系统是什么?有哪些功能和作用

今年市场经济下行&#xff0c;投资趋向于保守、人们消费降级&#xff0c;对于金融行业来说影响很大。受经济形式的影响加上行业的数字化转型升级&#xff0c;金融企业都在寻求客户管理的新策略&#xff0c;维护好忠实客户、吸引新客户投资。小编认为CRM系统是管理客户的不二之选…

计算机网络——运输层(1)暨小程送书

计算机网络——运输层&#xff08;1&#xff09;暨小程送书 小程一言专栏链接: [link](http://t.csdnimg.cn/ZUTXU) 运输层概述两个主要协议运输层和网络层的关系网络层运输层总结 多路复用与多路分解多路复用多路分解不同的技术实现时分复用&#xff08;TDM&#xff09;频分复…

74.网游逆向分析与插件开发-背包的获取-物品名称与物品编号的映射关系分析

内容参考于&#xff1a;易道云信息技术研究院VIP课 上一个内容&#xff1a;73.网游逆向分析与插件开发-背包的获取-物品数据的初步数据分析-CSDN博客 还是打开 Cheat Engine&#xff0c;搜索字符串&#xff0c;先把名字找到 然后又两个 然后第二个好像是根据悬浮窗来的&#…

投简历没回复?先做到这点。。

大家好&#xff0c;我是程序员鱼皮。 秋招告一段落&#xff0c;几家欢喜几家愁。不过这都无所谓了&#xff0c;上岸的同学继续努力&#xff0c;没上岸的同学发现问题&#xff0c;抓紧准备春招才是。 如果你投了几百份简历都没回复&#xff0c;那么一定有原因。比如环境、运气、…

瑞_Java开发手册_(四)安全规约

&#x1f64a;前言&#xff1a;本文章为瑞_系列专栏之《Java开发手册》的安全规约篇。由于博主是从阿里的《Java开发手册》学习到Java的编程规约&#xff0c;所以本系列专栏主要以这本书进行讲解和拓展&#xff0c;有需要的小伙伴可以点击链接下载。本文仅供大家交流、学习及研…

springBoot 添加自定义类库包

一、新建SpringBoot Web 二、添加类库包 com.saas.pdf 删除掉多余的类&#xff0c;新建类&#xff1a;PdfUtil.java package com.saas.pdf;public class PdfUtil {public static void Save(String filePath) {System.out.println("保存成功&#xff01;");} }三、…

1.5计算机网络的分类

1.5计算机网络的分类 1.5.1按照网络的作用范围进行分类 1、广域网WAN 广域网WAN&#xff08;WideAreaNetwork&#xff09;&#xff1a;广域网的作用范围通常为几十到几千公里&#xff0c;因而有时也称为远程网(longhaulnetwork)。广域网是互联网的核心部分&#xff0c;其任务…

electron+vue项目使用serialport报错Cannot read property ‘indexOf‘ of undefined解决办法

描述 使用ElectronVue项目时引入serialport串口后启动时报下面错误 Cannot read property indexOf of undefined解决方法 打开vue.config.js找到pluginOptions -> electronBuilder -> externals添加serialport module.exports {pluginOptions: {electronBuilder: {e…

eBPF运行时安全

引言 eBPF作为当前linux系统上最为炙手可热的技术&#xff0c;通常被用于网络流量过滤和分析、系统调用跟踪、性能优化、安全监控&#xff0c;当下比较知名的项目有Cilium、Falco等。 Cilium 是一个开源的容器网络和安全性项目&#xff0c;致力于提供高效的容器通信和强大的安…

Java异常处理--异常处理知识点总结及企业真题

文章目录 一、知识点总结&#xff08;1&#xff09;异常处理概述&#xff08;2&#xff09;异常处理的方式1&#xff1a;try-catch-finally&#xff08;3&#xff09;异常处理的方式2&#xff1a;throws&#xff08;4&#xff09;throw手动抛出异常对象&#xff08;5&#xff0…

2024美赛数学建模思路 - 案例:ID3-决策树分类算法

文章目录 0 赛题思路1 算法介绍2 FP树表示法3 构建FP树4 实现代码 建模资料 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 算法介绍 FP-Tree算法全称是FrequentPattern Tree算法&#xff0c;就是频繁模…

IOS-UIAlertController简单使用-Swift

UIAlertControlle时IOS的对话框控制器&#xff08;警报控制器&#xff09;&#xff0c;简单使用方法如下&#xff1a; 步骤都一样&#xff0c;先是创建UIAlertController&#xff0c;然后创建UIAlertAction&#xff0c;再将UIAlertAction添加到UIAlertController中&#xff0c;…

如何安装配置VisualSVN服务并实现公网访问本地服务【内网穿透】

文章目录 前言1. VisualSVN安装与配置2. VisualSVN Server管理界面配置3. 安装cpolar内网穿透3.1 注册账号3.2 下载cpolar客户端3.3 登录cpolar web ui管理界面3.4 创建公网地址 4. 固定公网地址访问 前言 SVN 是 subversion 的缩写&#xff0c;是一个开放源代码的版本控制系统…

【嘉立创EDA-PCB设计指南】3.网络表概念解读+板框绘制

前言&#xff1a;本文对网络表概念解读板框绘制&#xff08;确定PCB板子轮廓&#xff09; 网络表概念解读 在本专栏的上一篇文章【嘉立创EDA-PCB设计指南】2&#xff0c;将设计的原理图转为了PCB&#xff0c;在PCB界面下出现了所有的封装&#xff0c;以及所有的飞线属性&…

每日一题 2171. 拿出最少数目的魔法豆(中等)

只有两种拿法&#xff0c;要么全拿光&#xff0c;剩下的要取到和最少魔法豆的袋子的数目相等&#xff0c;显然关键在于每个袋子的最少豆子数量是多少&#xff08;少于这个数量的袋子是全拿出的&#xff09;想到了从小到大排序先把最少豆子的袋子认为是基线&#xff08;最少数量…

计算机毕业设计 基于Java的国产动漫网站的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

React与Vue性能对比:两大前端框架的性能

React和Vue是当前最流行的前端框架之一&#xff0c;它们在性能方面具有一些差异。 React的虚拟DOM机制使得它在渲染大型应用时表现出色。它通过将页面抽象为虚拟DOM树&#xff0c;并且只更新改变了的部分&#xff0c;从而减少了实际DOM的操作次数。这种优化可以提高应用的性能&…

C语言——atoi函数解析

目录 前言 atoi函数的介绍 atoi函数的使用 atoi函数的模拟实现 前言 对于atoi函数大家可能会有些陌生&#xff0c;不过当你选择并阅读到这里时&#xff0c;请往下阅读&#xff0c;我相信你能对atoi函数熟悉该函数的头文件为<stdlib.h> 或 <cstdlib> atoi函数的…

区间预测 | Matlab实现GRU-Adaboost-ABKDE的集成门控循环单元自适应带宽核密度估计多变量回归区间预测

区间预测 | Matlab实现GRU-Adaboost-ABKDE的集成门控循环单元自适应带宽核密度估计多变量回归区间预测 目录 区间预测 | Matlab实现GRU-Adaboost-ABKDE的集成门控循环单元自适应带宽核密度估计多变量回归区间预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实…

从零开始学习Zeppelin:大数据可视化分析的交互式开发系统!

介绍&#xff1a;Apache Zeppelin是一个基于Web的交互式开发系统&#xff0c;主要用于进行大数据可视化分析。其核心概念是notebook&#xff0c;所有的操作都可以在notebook中完成。Zeppelin提供了一套非常全面的数据分析解决方案&#xff0c;支持数据采集、数据发现、数据分析…