Linux 多进程

news2024/11/25 6:47:47

目录

0x01 linux中特殊的进程

0x02 进程的标识

0x03 创建子进程


0x01 linux中特殊的进程

  1. 0号进程:idle进程,系统启动加载的进程
  2. 1号进程:systemd进程,系统初始化,是所有进程的祖先进程 init
  3. 2号进程:kthreadd进程,负责内核中所有进程的调度和管理

0x02 进程的标识

  • 每个进程都会有一个非负整数来标识进程,pid
  • 查看进程的命令 ps -ef | grep yourprocessname

从左到右依次是:启动进程的用户 进程的id标识 父进程的id cpu占用率 开始时间 启动设备 运行总时间 启动时执行的命令

# 使用getpid(void)可以获取进程的id
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<unistd.h>

int main(){
    
    printf("进程的id=%d",getpid());
    printf("进程的父进程id=%d",getppid());

    sleep(10);
	return 0;
}

0x03 创建子进程

  • 使用fork函数可以创建新的进程
  • 在子进程调用fork函数创建进程会返回0,在父进程中使用fork函数会返回进程的ID
  • 子进程是父进程的副本
  • 子进程获得了父进程的数据空间,堆和栈的副本,不是共享,子进程改变数据,不会影响父进程变量的数据
  • 如果父进程先退出,子进程会成为孤儿进程,1号进程会管理孤儿进程,对子进程的状态进行收集工作
  • 如果子进程先退出,内核会向父进程发送一个SIGCHLD的信号,如果父进程不处理这个信号,子进程会成为僵尸进程
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<unistd.h>
#include<sys/types.h>
#include<sys/wait.h>

#include<signal.h>

void func(int sig){
	 int state;
     wait(&state);
}
int main(){
    // 1忽略子进程的sigchld
    // signal(SIGCHLD,SIG_IGN);
    // 3使用函数处理信号
    signal(SIGCHLD,func);
    File* file=fpopen("/tmp/tmp.txt","w+");
    fprintf(file,"this is a test\n
    fflush(file);
	printf("进程的id=%d",getpid());
    sleep(10);
	printf("进程的id=%d",getpid());
    int pid=fork();
    printf("fork出的id为%d",pid);
    sleep(1);
    if(pid==0)
    {
        printf("子进程的id为%d",getpid());
        printf("子进程的父进程id为%d",getppid
        //子进程的逻辑代码
   		fprintf(fp,"子进程 this is a test\n");
    }
    if(pid>0)
    {
		printf("父进程的id为%d",getpid());
        printf("父进程的父进程id为%d",getppid());
        //父进程的逻辑代码
    	fprintf(fp," 父进程 this is a test\n");
        //2 等待子进程退出的代码 使用wait方式阻塞等待子进程退出
        // int state;
        // wait(&state);
    }
	printf("进程的id=%d",getpid());
    sleep(30);
	printf("进程的id=%d",getpid());

    fclose(file);
}

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

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

相关文章

Zabbix监控Kubernets获取节点模板报错

Preprocessing failed for: {“error”:"Request failed with status code 401: {“kind”:“Status”,“apiVersion”:“v1”,"met ad …1. Failed: Discovery error: TypeError: cannot read property 1 of null. Zabbix 监控 Kubernetes 出现采集错误&#xff0c;…

麒麟系统相关

创建虚拟机 镜像下载地址 选择合适的镜像&#xff0c;进入引导后注意不要选择默认的第一条&#xff0c;选择第二条进入安装程序。 root密码修改 使用命令 sudo passwd root 开启ssh 配置好网络后发现能ping通&#xff0c;但无法ssh连接&#xff0c;ps -ef | grep ssh 得…

基于docker实现主从复制

1&#xff1a;实现主从复制这个过程我是趟过坑的&#xff0c;后面是自己动手搞了几遍都成功了以后才开始决定记录的&#xff0c;&#xff08;所以有的截图和上下文对不上的&#xff0c;比如说docker容器的名字对应不上&#xff0c;大家就用自己的就好&#xff09;&#xff0c;打…

“数据”对于仓库管理有多重要?!

仓库数据的重要性 做好仓库数据管理对企业的重要性不言而喻。通过有效地管理数据&#xff0c;企业可以更好地了解市场需求和库存情况&#xff0c;快速响应市场变化&#xff0c;提高库存周转率和客户满意度&#xff1b;此外&#xff0c;数据管理还可以帮助企业降低库存成本、减…

提升物流管理效率,快递批量查询高手软件助你一臂之力

物流管理中&#xff0c;准确跟踪和掌握快递的物流信息是非常重要的。而快递批量查询高手软件的出现&#xff0c;大大提高了物流管理的效率&#xff0c;为企业带来了诸多便利。 传统的快递查询方式往往需要手动逐个输入快递单号&#xff0c;费时费力且容易出错。而有了快递批量查…

源于传承,擎领未来,新架构、新工艺下的“换心工程”——金融电子化访中电金信副总经理、研究院院长况文川

当前&#xff0c;商业银行的经营环境正在发生着深刻而复杂的变化&#xff0c;在深化改革主旋律的指引下&#xff0c;数字化转型已成为我国商业银行普遍认同、广泛采用的战略性举措。核心系统作为承载银行业务的关键支柱系统&#xff0c;一直是各银行在金融科技建设中重点关注和…

Linux/centos上如何配置管理NFS服务器?

Linux/centos上如何配置管理NFS服务器&#xff1f; 1 NFS基础了解1.1 NFS概述1.2 NFS工作流程 2 安装和启动NFS服务2.1 安装NFS服务器2.2 启动NFS服务 3 配置NFS服务器和客户端3.1 配置NFS服务器3.2 配置NFS客户端 4 实际示例4.1 基本要求4.2 案例实现 1 NFS基础了解 NFS&…

Android UI自动化测试框架—SoloPi简介

1、UI自动化测试简介 软件测试简介 ​软件测试是伴随着软件开发一同诞生的&#xff0c;随着软件规模大型化&#xff0c;结构复杂化&#xff0c;软件测试也从最初的简单“调试”&#xff0c;发展到当今的自动化测试。 ​ 自动化测试是什么呢&#xff1f;自动化测试是把以人为…

解析固态光耦的独特特点和优势

固态光耦概述及其重要性 固态光耦是一种电子元件&#xff0c;具有独特的光电隔离功能&#xff0c;广泛应用于电气控制、通信和电力系统等领域。本文将深入探讨固态光耦的特点和优势&#xff0c;介绍它在市场中的重要性以及如何提高收录和首页排名。 高速、高精度的信号传输 …

Dolphinscheduler简单应用(二)—— 告警通知

一、本章目标 演示Dolphinscheduler的告警通知功能,将SQL任务组件查询返回结果集指定为邮件通知内容(支持为:表格、附件或表格附件三种模板)。二、 前提条件 已完成Dolphinscheduler部署 K8S集群部署,可参考文章:基于K8S环境部署Dolphinscheduler及简单应用其他部署形式,…

LeetCode236. 二叉树的最近公共祖先

236. 二叉树的最近公共祖先 文章目录 [236. 二叉树的最近公共祖先](https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-tree/)一、题目二、题解方法一&#xff1a;递归构建祖先数组方法二&#xff1a;一个非常方便的递归 一、题目 给定一个二叉树, 找到该树中…

性能测试|App性能测试需要关注的指标

一、Android客户端性能测试常见指标&#xff1a; 1、内存 2、CPU 3、流量 4、电量 5、启动速度 6、滑动速度、界面切换速度 7、与服务器交互的网络速度 二、预期标准指定原则 1、分析竞争对手的产品&#xff0c;所有指标要强于竞品 2、产品经理给出的预期性能指标数据…

青翼科技自研2路250MSPS DA回放FMC子卡模块

FMC150_V30是一款基于VITA57.1规范的2路125MSPS采样率16位分辨率AD采集、2路250MSPS采样率16位分辨率DA回放FMC子卡模块。该模块遵循VITA57.1规范&#xff0c;可直接与符合VITA57.1规范的FPGA载卡配合使用&#xff0c;板卡ADC器件采用ADI公司的AD9268芯片&#xff0c;板卡DAC器…

DDIM: DENOISING DIFFUSION IMPLICIT MODELS

DDIM: DENOISING DIFFUSION IMPLICIT MODELS 去噪扩散隐式模型DDIM预测噪声生成过程 实验 论文题目&#xff1a;Denoising Diffusion Implicit Models (DDIM) 论文来源&#xff1a;ICLR 2021 论文地址&#xff1a;https://arxiv.org/pdf/2010.02502.pdf 论文代码&#xff1a;ht…

“之江数据安全治理论坛”暨《浙江省汽车数据处理活动规定(专家建议稿)》研讨会顺利召开

研讨会主题 8月10日&#xff0c;“之江数据安全治理论坛”暨《浙江省汽车数据处理活动规定&#xff08;专家建议稿&#xff09;》研讨会在浙江大学计算机创新技术研究院举办。 本次研讨会的主题聚焦于“智能网联汽车的数据安全与数据合规”&#xff0c;邀请行业主管部门和数据…

iptables与firewall的命令的使用

iptables与firewall的命令的使用 安装firewall指令基本使用iptables简介命令查看 IPTABLES 版本查看当前 IPTABLES 规则添加规则修改规则删除某条规则加入白名单备份与还原定义策略 其他 安装 查看是否已安装&#xff1a; CentOS&#xff1a;rpm -qa | grep iptables 安装&am…

推荐一个好用的程序员工具箱,集成了代码生成,云剪切板以及AI能力

给大家推荐一个程序员必备网站&#xff0c;功能方便、实用&#xff0c;页面精美&#xff0c;下面是部分功能截图: 代码生成 云剪切板 工作日报生成 专利文章生成 毕业论文生成 地址: http://119.29.247.153/#/ai-tools​

计算机组成部分

计算机的五大部件是什么&#xff1f;答案&#xff1a;计算机的五大部件是运算器&#xff0c;控制器&#xff0c;存储器&#xff0c;输入设备和输出设备。 其中运算器和控制器合称中央处理器&#xff0c;是计算机的核心部件&#xff1b; 存储器是用来存储程序指令和数据用的&am…

免费AI作图项目:Fooocus,Github高星推荐,支持win私有化部署

我们都知道&#xff0c;Midjourney是需要付费使用的&#xff0c;而Stable Diffusion需要大量的学习成本&#xff0c;在这种背景下&#xff0c;Fooocus应运而生。 Fooocus 是一款图像生成软件。 Fooocus项目原地址&#xff1a;https://github.com/lllyasviel/Fooocus Stable …

华为手机Outlook手机APP无法登录邮箱,提示[2002]错误代码

近期遇到不少华为手机的Outlook APP无法登录邮箱Office365邮箱的案例&#xff0c;并且提示&#xff1a; 错误 出错了。[2002] 经测试&#xff0c;这应该是华为应用市场下载的Outlook版本有问题。 解决方法&#xff1a; 把Outlook卸载之后从微软官网重新下载官网版本去安装&am…