当前位置: 首页 > news >正文

Linux高编-进程的概念(1)

目录

1.ps aux

  2.top

3.kill -2 进程pid  //   

fork函数

getpid拿自己的进程号

getppid拿父进程号

fork()&&fork()||fork()

 父子进程的关系:

僵尸进程,孤儿进程

僵尸进程:子先消亡

  孤儿进程:父先消亡

void exit(int status) 

void _exit(int status)

重点区别:

atexit函数


重点:进程概念,fork函数

字符串分割函数strtok

查询进程相关命令
   

1.ps aux

    查看进程相关信息

        1.就绪态、运行态    R
        2.睡眠态、等待态    
            可唤醒等待态    S
            不可唤醒等待态    D
        3.停止态    T
        4.僵尸态    Z
        5.结束态    

  2.top


    根据CPU占用率查看进程相关信息
 

3.kill -2 进程pid  //
   

发送信号 进程名对应的所有进程
    killall a.out

fork函数

无需传参,调用就会产生一个父进程一个子进程,其实是复制了一份代码,同时在运行两份代码。

getpid拿自己的进程号

getppid拿父进程号

fork()&&fork()||fork()

几个进程?  五个  看最后一层有多少个进程

分析:fork()它返回值有两种情况,大于0,等于0,&&如果左边为1,右边执行,如果为0,右边不执行,|| 如果左边为1,右边不执行,如果左边为0,右边执行,按照这个思想去分析。

 父子进程的关系:

子进程是父进程的副本。子进程获得父进程数据段,堆,栈,正文段共享。
    
    在fork之后,一般情况那个会先运行,是不确定的。如果非要确定那个要先运行,需要IPC机制。
    
    区别:
    1)fork的返回值
    2)pid不同


进程的终止:8中情况
    1)main 中return
    2)exit(), c库函数,会执行io库的清理工作,关闭所有 的流,以及所有打开的文件。已经清理函数(atexit)。
    3)_exit,_Exit 会关闭所有的已经打开的文件,不执行清理函数。
    4)    主线程退出
    5)主线程调用pthread_exit
    异常终止
    6)abort()
    7)signal   kill pid
    8)最后一个线程被pthread_cancle

僵尸进程,孤儿进程

2.进程的退出
    
    僵尸进程和孤儿进程
    
    僵尸进程:进程执行结束但空间未被回收变成僵尸进程

僵尸进程:子先消亡

  孤儿进程:父先消亡

一个程序结束,命令提示符就输出,子进程还没结束,僵尸进程没有这种情况是因为将pcb块和子进程一起结束才程序结束,所有没有一个先一个后。

进程的退出

void exit(int status) 


    exit(0/1);
    功能:
        让进程退出,并刷新缓存区
    参数:
        status:进程退出的状态
    返回值:
        缺省
    
    EXIT_SUCCESS    0
    EXIT_FAILURE    1

exit(0/1)结束函数进程

void _exit(int status)

2._exit    系统调用
    void _exit(int status);
    功能:
        让进程退出,不刷新缓存区
    参数:
        status:进程退出状态
    返回值:
        缺省

重点区别:

exit()和_exit()主要区别是结束进程时会不会刷新缓冲区。

在下面可以看到不会i打印出aaaaaaa出来,程序到达exit就结束,其中exit()函数成功写入1.txt,而_exit()写入1.txt失败,主要是其不会刷新缓冲区。

回调函数

atexit函数

int atexit(void (*function)(void));//函数指针
    功能:
        注册进程退出前执行的函数
    参数:
        function:函数指针
            指向void返回值void参数的函数指针
    返回值:
        成功返回0
        失败返回非0

    当程序调用exit或者由main函数执行return时,所有用atexit
    注册的退出函数,将会由注册时顺序倒序被调用

重点理解:程序快要结束时,才会调用atexit函数

相关文章:

Linux高编-进程的概念(1)

目录 1.ps aux 2.top 3.kill -2 进程pid // fork函数 getpid拿自己的进程号 getppid拿父进程号 fork()&&fork()||fork() 父子进程的关系: 僵尸进程,孤儿进程 僵…...

go语言中new和make的区别

在 Go 语言中,new 函数不能用来创建通道(chan),这是因为 new 只分配内存并返回指向该内存的指针,而不负责初始化内存。 为什么不能使用 new 来创建通道? new 只能分配内存,但不会对内存进行初…...

SpringBoot响应式编程(3)R2DBC

一、概述 1.1简介 R2DBC基于Reactive Streams反应流规范,它是一个开放的规范,为驱动程序供应商和使用方提供接口(r2dbc-spi),与JDBC的阻塞特性不同,它提供了完全反应式的非阻塞API与关系型数据库交互。 …...

什么是私有继承

私有,公有,针对类而言; 私有( private )的成员,自己的,只能在自己内部( 类的定义体内部 )访问,外部( 类的定义体外部 )不能访问/调用; 公有( 或者说公开,public )的成员&#xff0…...

Scratch编程:开启智能硬件控制的大门

标题:“Scratch编程:开启智能硬件控制的大门” 在当今数字化时代,编程不仅仅是与计算机的交互,更是与物理世界的连接。Scratch,这款由麻省理工学院媒体实验室开发的视觉化编程语言,以其易学易用的特性&…...

机器学习第十二章-计算学习理论

目录 12.1基础知识 12.2 PAC学习 12.3有限假设空间 12.3.1可分情形 12.3.2不可分情形 12.4VC维 12.5 Rademacher复杂度 12.1基础知识 计算学习理论研究的是关于通过"计算"来进行"学习"的理论,即关于机器学习的理论基础,其目的…...

Java-自定义注解操作日志记录处理(@Pointcut注解不是必须的)

在Java中,使用自定义注解结合Spring AOP来实现操作日志记录是一种常见的做法。这种方式可 以帮助你轻松地在不修改业务代码的情况下增加日志记录的功能。 下面我将详细介绍如何定义一个自定义注解,并结合Spring AOP来实现操作日志记录的功能。 1. 定义自定义注解 首先,我…...

【c++】深入理解别名机制--引用

🌟🌟作者主页:ephemerals__ 🌟🌟所属专栏:C 目录 前言 一、引用的概念和定义 二、引用的特性 三、引用的实用性 1.引用传参 2.引用做返回值 2.1 引用做返回值的作用 2.2 引用坍缩问题、悬挂引用问…...

简便的qemu img扩容方法

虚拟机用着用着磁盘空间就不够了,那就要想办法增加磁盘空间大小 了。在虚拟机本身磁盘的基础上直接增加空间大小最简便,于是记录一下方法。 首先,在虚拟机关机状态下,使用qemu-img命令给虚拟机的磁盘镜像增加虚拟空间5GB&#xff…...

EPERM: operation not permitted,

这个错误提示 EPERM: operation not permitted, mkdir C:\Program Files\nodejs\node_global\node_modules\pnpm_tmp 通常是因为权限不足导致的。在 Windows 系统中,C:\Program Files\ 目录通常需要管理员权限才能写入。 要解决这个问题,你可以尝试以下…...

将Centos 8 Linux内核版本升级或降级到指定版本

本文以centos 8.0为例,内核版本为4.18.0-80.el8.x86_64,升级到内核版本为4.18.0-80.4.2.el8_0.x86_64。 1.查看当前系统版本信息 [rootcentos80-1905 ~]# uname -sr Linux 4.18.0-80.el8.x86_642.在网站:https://vault.centos.org/里面下载…...

小程序商城被盗刷,使用SCDN安全加速有用吗?

在电子商务蓬勃发展的今天,小程序商城因其便捷性和灵活性成为商家和消费者的新宠。然而,随着其普及,小程序商城的安全问题也日益凸显,尤其是盗刷现象频发,给商家和用户带来了巨大损失。面对这一挑战,是否可…...

nginx的基本使用与其日志

文章目录 1.nginx编译安装脚本2.nginx平滑升级,以及其步骤3.nginx核心配置,及实现nginx多虚拟主机4.nginx日志格式定制5.nginx反向代理及https安全加密6.基于LNMP和Redis的phpmyadmin的会话保持,以及其完整步骤 1.nginx编译安装脚本 #编译安…...

linux | 苹果OpenCL(提高应用软件如游戏、娱乐以及科研和医疗软件的运行速度和响应)

点击上方"蓝字"关注我们 01、引言 >>> OpenCL 1.0 于 2008 年 11 月发布。 OpenCL 是为个人电脑、服务器、移动设备以及嵌入式设备的多核系统提供并行编程开发的底层 API。OpenCL 的编程语言类似于 C 语言。其可以用于包含 CPU、GPU 以及来自主流制造商如 …...

算法-UKF中Sigma点生成

void UKF::MakeSigmaPoints() {Eigen::VectorXd x_aug_ Eigen::VectorXd(n_x_);x_aug_.head(n_x_) x_;Eigen::MatrixXd P_aug Eigen::MatrixXd::Zero(n_x_, n_x_);// 转成正定矩阵P_aug pdefinite_svd(P_);// LLT分解Eigen::MatrixXd L P_aug.llt().matrixL();sigma_point…...

精选五款热门骨传导耳机分享,让你避免踩坑的陷阱

因为骨传导耳机独特的佩戴方式和声音的传播方式,受到了小耳、油耳以及运动爱好者的的喜爱,但也由于市面上的骨传导耳机品牌越来越多,很多朋友不知道该怎么选择,今天我挑选出市面上体验感较好,各方面比较出色的骨传导给…...

「字符串」前缀函数|KMP匹配:规范化next数组 / LeetCode 28(C++)

概述 为什么大家总觉得KMP难?难的根本就不是这个算法本身。 在互联网上你可以见到八十种KMP算法的next数组定义和模式串回滚策略,把一切都懂得特别混乱。很多时候初学者的难点根本不在于这个算法本身,而是它令人痛苦的百花齐放的定义。 有…...

python人工智能002:jupyter基本使用

小知识:将jupyter修改为中文,修改用户变量, 注意是用户变量,不是系统变量 新增用户变量 变量名:LANG 变量值:zh_CN.UTF8 然后重启jupyter 上一章的软件安装完成之后,就可以创建文件夹来学习写…...

Linux使用 firewalld管理防火墙命令

Linux 发行版中使用的动态防火墙管理工具。使用 firewalld,你可以查看防火墙状态、当前配置的规则以及开放的端口。以下是一些常用的 firewalld 命令来管理和查看防火墙状态及端口配置。 1. 查看防火墙状态 检查 firewalld 是否正在运行 sudo systemctl status f…...

二叉树(三)

一、二叉树的遍历 二叉树遍历是按照某种特定的规则,依次对二叉树中的结点进行相应的操作,并且每个结点只操作一次。 1.前序遍历(先根遍历) 前序遍历(Preorder Traversal也叫先序遍历)——根、左子树、右…...

龙虎榜——20250610

上证指数放量收阴线,个股多数下跌,盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型,指数短线有调整的需求,大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的:御银股份、雄帝科技 驱动…...

JavaSec-RCE

简介 RCE(Remote Code Execution),可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景:Groovy代码注入 Groovy是一种基于JVM的动态语言,语法简洁,支持闭包、动态类型和Java互操作性&#xff0c…...

内存分配函数malloc kmalloc vmalloc

内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

(十)学生端搭建

本次旨在将之前的已完成的部分功能进行拼装到学生端,同时完善学生端的构建。本次工作主要包括: 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

前端倒计时误差!

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》

在注意力分散、内容高度同质化的时代,情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现,消费者对内容的“有感”程度,正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中&#xff0…...

Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!

一、引言 在数据驱动的背景下,知识图谱凭借其高效的信息组织能力,正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合,探讨知识图谱开发的实现细节,帮助读者掌握该技术栈在实际项目中的落地方法。 …...

三体问题详解

从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...

CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云

目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...

【JavaSE】绘图与事件入门学习笔记

-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...