Linux线程1

news2025/1/11 2:26:04

守护进程

1.守护进程的特点

后台服务进程

独立于控制终端

周期性执行某任务

不受用户登录注销影响 一般采用以d结尾的名字(服务)

2 . 进 程 组

进程的组长

        组里边的第 一 进程

        进 程 组 的ID = = 进 程 中 的 组 长 的ID

进 程 中 组 长 的 选 择

        进 程 中 的 第 一 个 进 程

进 程 组ID 的 设 定

        进 程 组 的ID 就 是 组 长 的 进 程ID

3 . 会 话

创 建 一 个 会 话 注 意 事 项

        不能是进程组长

        创建会话的进程成为新进程组的组长

        有些linux 版本需要root权限执行此操作

        创 建 出 的 新 会 话 会 丢 弃 原 有 的 控 制 终 端

        一 般 步 骤 ; fork , 父亲死 儿子执行创建会话操作(setid)

获 取 进 程 所 属 的 会 话ID

        pid_t get sid(pid _ t pid) ;

创建一个会话

        pid _ t setid (void) ;

4 . 创建守护进程模型

        fork子进程,父进程退出

        子进程创建新会话

        改变当前工作目录chdir

        重设文件掩码

        关闭文件描述符

        执行核心工作

举个简单的例子,创建一个会话

显而易见,会话是不会显示在终端上面(但他依然存在于系统之中)

我们可以调用命令查看该进程,依然存在

当然,也可以执行kill 命令,杀死进程

线程的概念

主线程和子线程

共享:

.text

.bss

.data

动态加载区

环境变量

命令行参数

-通信:全局变量,堆

不共享

        一共五个线程,栈区被平均分成五块

在Linux下: 线程就是进程-轻量级进程

对于内核来说,线程就是进程

多进程和多线程的区别:

程: 始终共享的资源 代码、文件描述符、内存映射区--mmap

线程:始终共享的资源:堆、全局变量,节省资源

查看指定线程的LWP号(进程号):

        线程号和线程ID是有区别的

        线程号是给内核看的

查看方式 :

找到程序的进程ID

ps -Lf pid

例:我们打开一个软件,对应的会出现很多进程

我们通过进程的PID,从而查看其线程号LWP

这里的所有线程的PID都为同一个,当然LWP会有多个,这也是我们经常说的多线程任务

线程的创建

1.创建线程‐‐pthread_create 

int pthread_create( pthread_t *thread),          //线程ID = 无符号长整型                      const pthread_attr_t *attr,  //线程属性,NULL                      

                    void *(*start_routine)(void *), //线程处理函数                      

                    void *arg);   //线程处理函数 

参数:        

        pthread:传出参数,线程创建成功之后,会被设置一个合适的值        

        attr:默认传NULL        

        start_routine:子线程的处理函数        

        arg: 回调函数的参数 

返回值:          

        成功:0           

        错误:错误号  //perror不能使用该函数打印错误信息           

主线程先退出,子线程会被强制结束 

验证线程直接共享全局变量

注:最后的pthread_join(pthid,NULL);表示等待子线程的结束,否则主线程会先于子线程结束(后面会讲)

线程创建成功

2.单个线程退出 --pthread_exit exit(0)

函数原型: void pthread‐exit(void *retval);     

retval指针:必须指向全局,堆 

使用函数是主线程退出,所以子进程不会打印88888

使用exit退出整个进程

使用函数退出子线程

3.阻塞等待线程退出,获取线程退出状态--pthread_join

函数原型:    int pthread_join(pthread_t pthread, void **retval) 

参数:     

        pthread:要回收的子线程的ID      

        retval:读取线程退出的携带信息        

传出参数       

        void* ptr;       

        pthread_join(pthid,&ptr);       

        指向的内存和pthread_exit参数指向地址一致 

 

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

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

相关文章

SQL注入——搜索型注入

搜索型注入——原理介绍 一些网站为了方便用户查找网站的资源,都对用户提供了搜索的功能,因为是搜索功能,往往是程序员在编写代码时都忽略了对其变量(参数)的过滤,而且这样的漏洞在国内的系统中普遍的存在; 其中又分为 POST/GET…

实验2-5-2 生成3的乘方表

//实验2-5-2 生成3的乘方表//输入一个非负整数n&#xff0c;生成一张3的乘方表&#xff0c;输出30~3n的值。可调用幂函数计算3的乘方。 #include<stdio.h> #include<math.h> int main(){int n;int num0;scanf("%d",&n);//输入在一行中给出一个非负整…

Opencv threshold函数、adaptiveThreshold函数详解和示例

1.threshold函数 double cv::threshold(InputArray src, OutputArray dst, double thresh, double maxval, int type ) src&#xff1a;待二值化的图像&#xff0c;图像只能是 CV_8U 和 CV_32F 两种数据类型。对于图像通道数目的要求与选择的二值化方法相关。dst&#xff1a;…

全球汽车橡胶减震支架市场规划预测:未来六年CAGR为2.5%

随着汽车行业的持续发展和消费者对驾驶舒适性的需求增加&#xff0c;汽车橡胶减震支架作为提升车辆稳定性和乘坐舒适性的关键组件&#xff0c;正逐渐受到市场的广泛关注。本文旨在通过深度分析汽车橡胶减震支架行业的各个维度&#xff0c;揭示行业发展趋势和潜在机会。 【市场…

反序列化靶机serial漏洞复现 超详细教程

环境搭建 漏洞环境&#xff1a;https://www.vulnhub.com/entry/serial-1,349/ 下载后使用Vmware打开 创建新的虚拟机&#xff1a; 选择客户机版本为Ubuntu 64位&#xff1a; 一直下一步&#xff0c;知道选择使用现有磁盘&#xff1a; 选择下载的vmdk磁盘文件&#xff1a; 开机…

生信技能55 - WisecondorX分析结果过滤和质控

WisecondorX分析CNV,对每条染色的CNV loss和gain进行分组,对每个组求ratio平均值和zscore平均值,基于该数值对CNV进行质控和过滤,并对连续的CNV进行合并,获得可信的CNV。 WisecondorX基本使用方法以及npz文件转换和reference构建参考文章: 生信技能53 - wiseconrdoX自动…

利用扩散模型的反馈优化图片理解模型

利用扩散模型的反馈优化图片理解模型 自从 DDPM 以来&#xff0c;扩散模型已经成为了绝对主流的图片生成模型。最近&#xff0c;有研究者开始探索如何将扩散模型的生成能力用于提升判别模型的能力。主要有三种用法&#xff1a;生成模型反演用作判别模型、生成模型用于数据增强…

案例分享—国外优秀UI设计作品

国外 UI设计作品之所以出色&#xff0c;首先在于它们对用户体验的极致追求。设计师们深入了解用户需求&#xff0c;通过细腻的界面布局、直观的交互逻辑和丰富的视觉元素&#xff0c;打造出让用户爱不释手的作品。同时&#xff0c;他们勇于创新&#xff0c;不断尝试新的设计理念…

说说你们出来打工转了几个行业?

先说说我吧&#xff0c;大学毕业出来就从事智能交通刷卡方面&#xff0c;后来又从事多年的自动化控制&#xff0c;接着又做智能停车系统&#xff0c;接着又做医疗&#xff0c;美容仪器&#xff0c;仪器仪表&#xff0c;开关电源……做的有点杂&#xff0c;你们呢&#xff1f;一…

旧版本的Oracle OCM证书怎么升级到最新版本?

一、先来说一下OCM认证&#xff0c;全称是&#xff1a;Oracle Certified Master - Oracle认证大师&#xff0c;是Oracle数据管理员的最高级别的认证。 有了OCM证书&#xff0c;可以证明你的专业能力&#xff0c;是 Oracle 数据库管理方面具备高级和全面技能的权威认证。在竞争…

好用的抠图小技巧

在ps里的抠图方法 方法一&#xff1a;直接在菜单栏里选择主体&#xff0c;选中主体后会出现蚂蚁线&#xff0c;这个时候可能选区还不够完整&#xff0c;需要借助快速选择工具细化选取&#xff0c;选好之后按ctrlj复制选区就抠好啦 方法二&#xff1a;用快速选择工具直接选取人…

jdk环境、tomcat环境

回顾复习 安装nodejs&#xff0c;和jdk一样的软件运行环境 yum -y list installed|grep epel #是否安装epel yum -y install nodejs node -v #查看版本号 下载对应的nodejs软件npm yum -y install npm npm -v #查 npm set config ....淘宝镜像 安装vue/cli…

PatchCore:工业异常检测中的全面召回

PatchCore&#xff1a;工业异常检测中的全面召回 前言相关介绍PatchCore的工作原理&#xff1a;优点&#xff1a;缺点&#xff1a; 实验环境项目地址LinuxWindows 项目结构具体用法准备数据进行训练进行测试 常见问题ModuleNotFoundError: No module named patchcore解决方法 O…

【项目实战】—— 高并发内存池

文章目录 什么是高并发内存池&#xff1f;项目介绍一、项目背景二、项目目标三、核心组件四、关键技术五、应用场景六、项目优势 什么是高并发内存池&#xff1f; 高并发内存池是一种专门设计用于高并发环境下的内存管理机制。它的原型是Google的一个开源项目tcmalloc&#xff…

数字化转型中的安全挑战:源代码加密与文档加密的重要性

深信达SDC防泄密系统在源代码加密和文档加密领域的表现能力非常出色。根据搜索结果&#xff0c;SDC沙盒防泄密系统是专门针对敏感数据防泄密的保护系统&#xff0c;尤其适用于研发型企业的数据保护。系统通过实现对数据的代码级保护&#xff0c;不影响工作效率和正常使用&#…

实现Obsidian PC端和手机端(安卓)同步

步骤 1&#xff1a;在PC端设置Obsidian 安装Obsidian和Git&#xff1a;确保你的PC上已经安装了Obsidian和Git。你可以从Obsidian官网和Git官网下载并安装。 克隆GitHub代码库&#xff1a;在PC上打开命令行&#xff08;例如Windows的命令提示符或Mac/Linux的终端&#xff09;&a…

4.4、文件管理

文件结构 计算机系统中采用的索引文件结构如下图所示: 系统中有13个索引节点,0-9为直接索引,即每个索引节点存放的是内容,假设每个物理盘大小为4KB,共可存4KB * 1040KB数据; 10号索引节点为一级间接索引节点,大小为4KB,存放的并非直接数据,而是链接到直接物理盘块的地址,假设每…

利用 PhysicsConstraint 实现开门效果

先到 Sketchfab 中下载一个门的 3D Model&#xff0c;Popular 3D models - Sketchfab 下载完毕后解压导入到 UE5 中&#xff0c;注意这里需要导入 Static Mesh&#xff1b; 然后将贴图配置到材质 Door Material 中&#xff1b; 处理完毕后&#xff0c;配置使用 Modeling Tools …

【区块链+绿色低碳】山东邹平:区块链生态环境监管平台 | FISCO BCOS应用案例

山东省滨州市生态环境局邹平分局通过实地考察和调研发现&#xff0c;执法大队在执法工作中存在各排污企业设备系统无 法互通、终端采集数据固证难且可信度低、环境执法电子证据采集规则与司法采信标准不统一等痛点。而区块链 的分布式记账、不易篡改性和智能合约自动执行机制&a…

【无标题】vue2鼠标悬停(hover)时切换图片

在Vue 2中&#xff0c;要实现鼠标悬停&#xff08;hover&#xff09;时切换图片的功能&#xff0c;你不能直接在模板的:src绑定中处理这个逻辑&#xff0c;因为Vue的模板不支持条件渲染的复杂逻辑&#xff08;如基于鼠标状态的动态图片切换&#xff09;。但是&#xff0c;你可以…