进程的退出以及线程

news2024/11/16 13:54:40

接上节:

1.wait 本身是一个阻塞操作,谁调用它就会使调用者阻塞

2.父进程要获得子进程的退出状态

要两个进程配合操作:

子进程:

    exit(退出状态值)

    退出状态值  只有最低为有效,范围为[0-255]

父进程

    wait(&status)

    获取到退出状态值

    WIFEXITED()   //先判断是否为正常退出

    WEXITSTATUS   //获取到exit传递的退出状态值

    WIFSIGNALED:发送一个信号让子进程结束

    WTERMSIG(:返回让程序结束的信号代码

练习:

Pid_t  waitpid(pid_t pid,int *wstatus,int options);

功能:

等待子进程状态发生改变

参数:

非阻塞调用:

总结:

1.wait和waitpid都是等待子进程状态改变

2.wait 是一种阻塞调用

3.waitpid 可以实现非阻塞调用

进程退出:

处理方式

Wait         //阻塞方式 ---调用进程  一般不做额外的事

Waitpid     //非阻塞的方式  ---调用进程  逻辑一般不受影响

                     waitpid 想要处理到子进程

                     必须套在循环中

1.创建 --- fork

    //创建一个子进程

    //创建多个子进程

    //创建好之后,能区分父子进程代码的逻辑

2.执行

A.做与父进程相同的事

B.做与父进程不同的事

     fork + exec  //minishell

3.进程的退出

    return

      exit

     ——exit

4.两个特殊状态

  孤儿进程---没有危害,不需要处理

  僵尸态进程---处理

   Wait

   waitpid

线程

线程即轻量级的进程

2.为什么需要线程

   进程的产生     ------fork  

   线程 ----轻量级的进程

   进程 ----重量级的进程

线程在创建时需要的资源少

线程  在创建 和 调度 时空开销都比进程小

线程 成为 CPU执行的最小单元

进程 成为 资源分配的基本单元

3.线程组成

线程   :tid //thread

程序计数器  寄存器集合   3栈

4.线程与进程的关系

a.线程是存在于 进程中的

b.线程 共享了进程的资源(代码段,数据段,打开一些文件,信号等)

c.线程结束,不一定导致进程结束

5.线程的编程    //类似与进程过程

线程函数

Red hat  /  IBM

            // ThinkPad

Red  hat  实现的一套线程函数  //NPTL线程库

NPTL(NEW posix  thread library)

a.线程的创建    pthread_create

线程在编译时需要加上   - lpthread

注:

  1.主函数所在的执行流-----主线程

  2.其他的线程    -------子线程(次线程)

    主线程和子线程之间不存在父子关系

    各个线程之间  地位是平等的

获得线程的tid的函数

Pthread_self()  //在那个线程中调用,获得的就是那个线程的tid号

b.线程的执行

就体现在线程的   执行函数  (回调函数)上

c.线程的退出
方式1

pthread_exit

Void  pthread_exit (void *retval)

功能:

    结束调用的线程

参数:

    retval   //退出状态值   //需要传的是,退出状态值的地址

注意:

    1.pthread_exit   本身表示结束线程

      如果用在main函数中 表示结束主线程

      主线程结束   并不表示进程

d.线程的资源回收

Int pthread_join(pthread_t thread,void **retval)

功能:

      等待线程结束

参数:

返回值:

     成功  0

     失败  错误码

注:

   线程退出时,可以带出退户状态值

   但是传的是地址

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

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

相关文章

<Qt> 系统 - 网络编程 | 音视频

目录 前言: 一、QUdpSocket (一)核心 API 概览 (二)设计一个UDP回显服务器 二、QTCPSocket (一)核心 API 概览 (二)设计一个TCP回显服务器 三、HTTP Client 四、…

javaer快速入门 goweb框架 gin

gin 入门 前置条件 安装环境 配置代理 # 配置 GOPROXY 环境变量,以下三选一# 1. 七牛 CDN go env -w GOPROXYhttps://goproxy.cn,direct# 2. 阿里云 go env -w GOPROXYhttps://mirrors.aliyun.com/goproxy/,direct# 3. 官方 go env -w GOPROXYhttps://goproxy.…

【自动驾驶】自定义消息格式的话题通信(C++版本)

目录 新建消息文件更改包xml文件中的依赖关系更改cmakelist文件中的配置执行时依赖改变cmakelist编译顺序发布者程序调用者程序新建launch文件程序测试 新建消息文件 在功能包目录下,新建msg文件夹,下面新建mymsg.msg文件,其内容为 string …

机械行业数字化生产供应链产品解决方案(十六)

我们的机械行业数字化生产供应链产品解决方案通过全面应用物联网、人工智能和大数据技术,构建了一个高效的智能生产与供应链系统,能够在设计、生产和物流全环节中实现实时数据监控与动态优化。系统通过智能分析和预测,优化了生产计划和资源配…

Linux系统驱动(十九)块设备驱动

文章目录 一、块设备驱动简介(一)简介(二)块设备驱动相关概念 二、块设备驱动(一)框架图1. 虚拟文件系统(VFS)2. Disk Cache:硬盘的高速缓存3. 映射层(mappin…

IP代理如何增强网络安全性?

在当今的数字时代,网络安全已成为一个关键问题,而使用 IP 代理可以成为增强网络安全的有效方法。根据请求信息的安全性,IP 代理服务器可分为三类:高级匿名代理、普通匿名代理和透明代理。此外,根据使用的用途&#xff…

NT35510的LCD函数详解01(洋桃电子-触摸屏开发者笔记)

NT35510的LCD函数详解01(洋桃电子-触摸屏开发者笔记) 资料下载: 洋桃电子 YoungTalk 探索最好的 STM32 教学 (doyoung.net) 接口类型 NT35510 数据手册(英文).pdf NT35510 应用手册(英文).…

Jenkins持续集成工具学习

一、从装修厨房看项目开发效率优化 二、持续集成工具 三、JavaEE项目部署方式对比 四、Jenkins+SVN持续集成环境搭建

WebGoC题解(18) 630.电线杆(2019NHOI小乙)

题目描述 小C在农场的附近看到有n颗电线杆排成一行,相邻之间距离为20。它们高度可能不一样,但高度相同的电线杆顶端有电线连接。如下面示意图中,电线杆用粗细为6的垂直直线画,电线用粗细为2的水平直线画。给定每个电线杆的高度&am…

Linux-Haproxy搭建Web群集

LVS在企业应用中抗负载能力强 不支持正则处理,不能实现动静分离对于大型网格,LVS的实施配置复杂,维护成本较高 Haproxy是一款可提供高可用性、负载均衡、及基于TCP和HTTP应用的代理的软件 适用于负载大的Web站点运行在硬件上可支持数以万计的…

AI大模型开发——4.transformer模型(0基础也可懂)(1)

无论是想怎样学习大模型,transformer都是一个绕不开的话题。transformer的出现彻底改变了nlp领域,进一步推动了大模型的产生,可以说,transformer就是大模型开发的鼻祖。 可能只通过说大家会有些不理解。大家可以看下方的大语言模型…

打卡第四十四天:最长公共子序列、不相交的线、最大子序和、判断子序列

一、最长公共子序列 题目 文章 视频 本题和最长重复子数组区别在于这里不要求是连续的了,但要有相对顺序,即:"ace" 是 "abcde" 的子序列,但 "aec" 不是 "abcde" 的子序列。 确定dp数…

4个快捷高效的ai在线写作工具推荐。

ai在线写作因其快速的创作方式,高效的写作效率以及能够为我们带来无限的灵感而被广泛应用。如果你还不会使用ai进行写作的话,就看看下面这4款AI写作工具吧。 1、笔灵在线创作 直通车 :https://ibiling.cn 这是个在线的AI工具网站,在内容创作…

个人可识别信息(PII) AI 去除 API 数据接口

个人可识别信息(PII) AI 去除 API 数据接口 ai / 隐私保护 基于 AI 模型自动去除个人识别信息(PII) 个人信息保护 / AI 模型 。 1. 产品功能 基于自有专业模型进行 PII 自动去除高效处理敏感信息全接口支持 HTTPS(TLS v1.0 / v1.1 / v1.2 /…

地质灾害评估和治理工程勘查设计资质乙级资质办理标准

地质灾害评估和治理工程勘查设计资质乙级资质的办理标准主要包括单位条件、专业技术人员条件、仪器设备要求以及申请材料等方面。以下是详细的办理标准: 一、单位条件 **1、法人资格:**申请单位应具有企业法人或者事业单位法人资格。 **2、管理体系&a…

龙良曲pytorch课时1-课时13

前言 这篇是个人学习龙曲良老师的pytorch课程的笔记,疑惑地方自己加的内容 一、pytorch引入 1. 自动求导 在深度学习中,我们通常需要训练一个模型来最小化损失函数。这个过程可以通过梯度下降等优化算法来实现。梯度是函数在某一点上的变化率&#x…

Linux基础入门--目录结构之基本目录操作及注意事项

😀前言 本篇博文是关于Linux基础入门–目录结构的基本介绍、基本目录和操作命令,希望你能够喜欢 🏠个人主页:晨犀主页 🧑个人简介:大家好,我是晨犀,希望我的文章可以帮助到大家&…

滴答定时器笔记

SysTick介绍 1.1 什么是SysTick? Systick,即滴答定时器,是内核中的一个特殊定时器,用于提供系统级的定时服务。该定时器是一个24位的 递减计数器,具有自动重载值寄存器的功能。当计数器到达自动重载值时,它…

无人机中的温度/湿度/气压传感器详解!!!

一、温度传感器 温度传感器是一种用来测量物体或环境的温度变化的传感器。在无人机中,温度传感器通常采用红外线热成像技术,通过红外线相机获取物体表面的温度数据,实现对环境和物体温度的监测和测量。该技术具有响应速度快、无需接触、测量…

100个练习学习Rust!构文・整数・变量

前一篇文章 【0】准备 【1】构文・整数・变量 ← 本次全部文章列表 《100 Exercise To Learn Rust》第2回,也就是实际演习的第1回!从这次开始,我们会适度减少前置说明,直接进入问题的解决! 本次的相关页面 1.1. Syn…