【进程与线程】进程的PID

什么是 PID?

PID(Process Identifier,进程标识符)是操作系统为每个进程分配的一个唯一标识,用于标识系统中的每个进程。PID 是一个非负整数,通常从 1 开始分配;每个运行中的进程都有一个唯一的 PID,通过 PID,操作系统可以区分不同的进程并对它们进行管理。

简单点理解为 操作系统为进程分配的身份证号。


PID 的作用

  1. PID 是进程的唯一标识,操作系统通过 PID 来区分和管理进程;用户和管理员可以通过 PID 操作特定的进程(如通过 kill 命令终止进程)。
  2. 用于进程间通信:一些进程间通信(如信号传递)需要使用 PID 确定目标进程。
  3. 系统调试与监控:系统管理员或开发者可以通过 PID 来监控进程的状态(如 CPU 使用率、内存占用等)。

PID是唯一标识进程,帮助操作系统管理和调度进程,在开发中,PID 被广泛用于进程间通信、调试、监控和操作系统管理。


PID 的分配

操作系统在创建进程时,为每个进程分配一个唯一的 PID。
PID分配规则:顺序分配 —> PID 的分配通常是递增的,但当最大值达到后,会从最小值重新分配未使用的 PID。

常见的 PID 分配范围

Linux/Unix 系统:PID 的默认范围是 1 到 32768(可以通过修改 /proc/sys/kernel/pid_max 调整最大值,例如扩展到 4194304)。
Windows 系统:PID 通常为一个 32 位整数。

特殊的 PID
  • PID 0:表示内核调度程序(不是普通进程)。
  • PID 1:表示 init 进程(Linux/Unix 系统中的第一个用户态进程,负责启动其他进程)。
  • PID 2~N:用于其他系统进程和用户进程。

获取 PID 的方法

(1)在程序中获取当前进程的 PID(Unix/Linux 系统):
C:

#include <unistd.h>
#include <stdio.h>int main() {pid_t pid = getpid();  // 获取当前进程的 PIDprintf("Current PID: %d\n", pid);return 0;
}

Python:

import os
print(f"Current PID: {os.getpid()}")

(2)通过命令获取进程的 PID
使用 ps 命令:

ps -e    # 显示所有进程及其 PID
ps -ef   # 显示详细的进程信息
ps -aux  # 显示所有进程的详细信息

使用 tophtop:通过实时监控工具查看正在运行的进程及其 PID。
使用 pidof 命令:

pidof <进程名>   # 获取指定进程的 PID

与 PID 相关的系统调用

(1)获取当前进程的 PID
使用 getpid() 系统调用。在 Linux/Unix 系统中,用于获取当前进程的 PID。
(2)获取父进程的 PID
使用 getppid() 系统调用。用于获取当前进程的父进程的 PID。
(3)创建子进程
使用 fork() 系统调用(Linux/Unix 系统)。父进程调用 fork() 后,会创建一个子进程,父进程的 fork() 返回子进程的 PID,而子进程的 fork() 返回 0。

#include <stdio.h>
#include <unistd.h>int main() {pid_t pid = fork();if (pid == 0) {// 子进程printf("This is child process. PID: %d, Parent PID: %d\n", getpid(), getppid());} else if (pid > 0) {// 父进程printf("This is parent process. PID: %d, Child PID: %d\n", getpid(), pid);} else {// fork 失败perror("fork failed");}return 0;
}

PID 的回收机制

当进程终止时,其 PID 会被系统回收;回收的 PID 会重新分配给新的进程。系统会确保在一段时间内不会重复使用同一个 PID,以避免 PID 冲突。

僵尸进程与 PID 回收

如果一个子进程终止后,父进程没有调用 wait()waitpid() 获取其退出状态,子进程会进入僵尸状态。
僵尸进程虽然释放了资源,但其 PID 不会被系统回收,直到父进程清理该子进程。

注意事项
  1. PID 不保证连续性:PID 是唯一的,但不连续。由于进程的创建和退出,PID 可能会跳跃。
  2. PID 的最大值限制:Linux 系统中,PID 的最大值可通过 /proc/sys/kernel/pid_max 查看或修改:
cat /proc/sys/kernel/pid_max  # 查看 PID 最大值
echo 4194304 > /proc/sys/kernel/pid_max  # 修改最大值
  1. PID 冲突问题:当系统中进程数量非常多且 PID 最大值较小时,可能会导致 PID 重复分配的风险。

综上,PID 是操作系统中进程管理的核心抽象,它通过唯一标识的方式为操作系统提供了一种高效、简单的进程区分机制。操作系统通过 PID 实现进程的生命周期管理(创建、运行、终止)和资源分配。PID 是进程间通信和信号传递的重要桥梁(如 kill 命令通过 PID 发送信号)。

在实际开发中,系统管理员和开发者通过 PID 进行进程监控、调试、优化和故障处理。

以上。仅供学习与分享交流,请勿用于商业用途!转载需提前说明。

我是一个十分热爱技术的程序员,希望这篇文章能够对您有帮助,也希望认识更多热爱程序开发的小伙伴。
感谢!

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

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

相关文章

JavaSE学习心得(多线程与网络编程篇)

多线程-网络编程 前言 多线程&JUC 多线程三种实现方式 第一种实现方式 第二种实现方式 第三种实现方式 常见成员方法 买票引发的安全问题 同步代码块 同步方法 Lock锁 生产者和消费者 常见方法 等待唤醒机制 练习 抢红包 抽奖 多线程统计并求最…

Pytorch基础教程:从零实现手写数字分类

文章目录 1.Pytorch简介2.理解tensor2.1 一维矩阵2.2 二维矩阵2.3 三维矩阵 3.创建tensor3.1 你可以直接从一个Python列表或NumPy数组创建一个tensor&#xff1a;3.2 创建特定形状的tensor3.3 创建三维tensor3.4 使用随机数填充tensor3.5 指定tensor的数据类型 4.tensor基本运算…

candb++ windows11运行报错,找不到mfc140.dll

解决问题记录 mfc140.dll下载 注意&#xff1a;放置位置别搞错了

​公专网一体5G工业路由器,智慧电网全链路加密监控管理

随着可再生能源的集成 电网调度策略复杂性增加 需更精细的并网管理以平衡供需 传统电力网络的通信基础落后 难以适应电力设施的广泛分布 和日益增长的管理维护需求 计讯物联5G公专网一体路由器 通过融合公网和专网的优势 有效解决了现代电网对于 高效、灵活和安全通信的需求 ↓…

【Linux】--- 进程的等待与替换

进程的等待与替换 一、进程等待1、进程等待的必要性2、获取子进程status3、进程等待的方法&#xff08;1&#xff09;wait&#xff08;&#xff09;函数&#xff08;2&#xff09;waitpid函数 4、多进程创建以及等待的代码模型5、非阻塞接口 轮询 二、进程替换1、替换原理2、替…

zerotier搭建虚拟局域网,自建planet

基于该开源项目 自建planet节点&#xff0c;更快速&#xff0c;更安全 本教程依据docker-zerotier-planet 项目文档书写&#xff0c;并以linux(centos 7)和windows作为示例&#xff0c;需要其他系统配置方法&#xff0c;可移步项目文档 一. 前置资源 具有外网ip的服务器 后面…

屏幕轻触间:触摸交互从 “感知” 到 “智算” 的隐秘路径

从用户点击屏幕到前端感知及数据处理全流程剖析 引言 在移动智能设备与触摸交互技术深度融合的当下&#xff0c;当我们的手指轻触手机屏幕&#xff0c;一系列复杂且精妙的技术流程便瞬间启动。这一过程涵盖硬件层、驱动层、操作系统层、应用层&#xff0c;甚至延伸到后端的数…

深入Node.js集群:原理、优势与搭建实战,如何应对高并发

文章目录 一、Node.js 集群简介二、Node.js 集群原理剖析2.1 主从模型2.2 负载均衡机制2.3 进程间通信&#xff08;IPC&#xff09; 三、Node.js 集群优势详解3.1 性能提升3.2 高可用性3.3 资源利用率优化 四、Node.js 集群搭建实战4.1 准备工作4.2 创建主控制节点4.3 工作节点…

数字普惠金融对新质生产力的影响研究(2015-2023年)

基于2015—2023年中国制造业上市公司数据&#xff0c;探讨了数字普惠金融对制造业企业新质生产力的影响及作用机理。研究发现&#xff0c;数字普惠金融有助于促进制造业企业新质生产力的发展&#xff0c;尤其是在数字普惠金融的使用深度较大的情况下&#xff0c;其对新质生产力…

数据仓库基础常见面试题

1.数据仓库是什么 ‌数据仓库&#xff08;Data Warehouse&#xff09;是一个面向主题的、集成的、非易失的、随时间变化的数据集合&#xff0c;用于支持企业的管理决策‌。它不同于传统的操作型数据库&#xff0c;后者主要用于处理日常业务交易和实时查询&#xff0c;而数据仓库…

记一次OpenEuler Linux磁盘分区表损坏的数据恢复

问题复现 原本有一台GIS地图服务器存放大量数据&#xff0c;突然有一天磁盘满了&#xff0c;于是运维人员照常进行磁盘扩容。但由于误操作&#xff0c;导致使用fdisk的时候把分区表损坏了&#xff0c;表现如下&#xff1a; 这里可以看到启动时能看到xvda被分为了xvda1和xvda2…

分布式数据存储基础与HDFS操作实践(副本)

以下为作者本人撰写的报告&#xff0c;步骤略有繁琐&#xff0c;不建议作为参考内容&#xff0c;可以适当浏览&#xff0c;进一步理解。 一、实验目的 1、理解分布式文件系统的基本概念和工作原理。 2、掌握Hadoop分布式文件系统&#xff08;HDFS&#xff09;的基本操作。 …

APP推荐:全新TV端来了,8K原画电视版

▌ 软件介绍 B站都不陌生吧&#xff0c;一个能追番、学习、娱乐的多元平台&#xff0c;之前也分享过几款第三方TV端&#xff0c;其中的BV最近更新了全新版本。 使用了全新的UI界面&#xff0c;由之前的顶部菜单栏改成了侧边布局&#xff0c;已解锁限制&…

【数据结构】基础知识

目录 1.1 什么是数据结构 1.2数据 1.3 逻辑结构 1.4 存储结构 1.4.1 顺序存储 1.4.2 链式存储 1.4.3 索引存储 1.4.4 散列存储 1.5 操作 1.1 什么是数据结构 数据的逻辑结构以及存储操作 数据结构没有那么复杂&#xff0c;它就教会你一件事&#xff1a;如何更有效的…

【Rust】变量与可变性

目录 思维导图 1. 变量与可变性 1.1 不可变性 1.2 可变性 2. 常量 2.1 定义与特性 3. 变量遮蔽&#xff08;shadowing) 3.1 影子机制 3.2 遮蔽与可变性的区别 4.示例 4.1 变量和可变性示例 4.2 可变变量示例&#xff1a; 4.3 常量示例&#xff1a; 4.4 遮蔽示例&a…

Mycat读写分离搭建及配置超详细!!!

目录 一、Mycat产生背景二、Mycat介绍三、Mycat安装四、Mycat搭建读写分离1、 搭建MySQL数据库主从复制2、 基于mysql主从复制搭建MyCat读写分离 五、Mycat启动常见错误处理1、Caused by: io.mycat.config.util.ConfigException: SelfCheck### schema TESTDB refered by user u…

【6】Word:海名公司文秘❗

目录 题目 List.docx Word.docx List.docx和Word.docx 题目 List.docx 选中1/4全角空格复制→选中全部文本→开始→替换&#xff1a;粘贴将1/4全角空格 替换成 空格选中全部文本→插入→表格→将文本转化成表格→勾选和布局→自动调整→勾选 选中第一列&#xff0c;单机右键…

【Rust】引用与借用

目录 思维导图 1. 引用与借用的基本概念 1.1. 引用示例 2. 借用的规则 2.1. 可变借用示例 2.2. 借用的限制 3. 引用的生命周期 思维导图 1. 引用与借用的基本概念 引用的定义&#xff1a;引用是一种指向数据的指针&#xff0c;但与裸指针不同&#xff0c;Rust的引用在编…

贪心算法详细讲解(沉淀中)

文章目录 1. 什么是贪心算法&#xff1f;&#xff08;贪婪鼠目寸光&#xff09;经典例题1.1.1 找零问题1.1.2最小路径和1.1.3 背包问题 2.贪心算法的特点2.1 证明例1 3.学习贪心的方向心得体会 1. 什么是贪心算法&#xff1f;&#xff08;贪婪鼠目寸光&#xff09; 贪心策略&a…

【专题】2025年节日营销趋势洞察报告汇总PDF洞察(附原数据表)

原文链接&#xff1a; https://tecdat.cn/?p38813 在当今复杂多变且竞争激烈的消费市场环境下&#xff0c;节日营销已成为企业获取市场份额、提升品牌影响力的关键战略时机。我们深知深入洞察节日营销趋势对于企业决策的重要性。 本报告汇总基于对 2024 年多个关键消费节点及…