Linux 学习之路 - 进程篇 - PCB介绍1-标识符

目录

一、基础的命令

<1> ps axj 命令

<2> top 命令

<3> proc 目录

二、进程的标识符

<1>范围

<2>如何获取标识符

<3>bash进程

三、创建进程


一、基础的命令

前面介绍了那么多,但是我们没有观察到进程相关状态,所以下面我们介绍几个命令,帮助查看进程

<1> ps axj 命令

这个命令就能查看当前所有进程相关信息,其中ps命令通常就是用于查看当前运行的程序。其他的选项暂时不做介绍。

下面我演示一个进程供大家参考

这里先在test.c文件里一段循环代码(如果我们不用循环,进程会很快的开始并销毁,我们没法观察到)

运行该程序,并打开另一个终端,观察这个程序是否为终端

此时我们就会发现,这里面有两个进程,一个是./tt.c 另一个是 grep 命令,grep命令也是进程是因为我们在筛选这个过程本身也就是一个程序,程序运行就是一个进程。这里我们就可以发现,几乎任何的独立的指令就是一个程序,一运行就是一个程序。

<2> top 命令

top命令也能查看一些进程的信息,只不过相对上一个命令,这个命令观察到的进程信息相对限,这个命令主要由于检测系统的运行情况,跟windows操作系统的任务管理器类似,具有监管的功能。

<3> proc 目录

在 /proc 目录下,我们也可以查看进程的信息,不过这里涉及文件系统的相关知识,这里大家简单了解一下就好

这些数字代表就是具体的进程,我们可以进入其中查看对应的数据

这里我们可以看见两个显眼的数据,一个是exe,对应的是磁盘里的对应路径的可执行程序,另外一个cwd就表示当前的工作目录,这也就是我们在我们能在创建文件时,系统默认就能创建在当前目录下的原因。(其他的数据暂不做了解)这里我们是能够修改这个路径的,使用chdir 接口就能完成该操作

只要在chdir 中输入新的文件路径,就修改当前的工作路径。

二、进程的标识符

<1>范围

在操作系统中常常要运行大量的进程,为了方便管理,操作系统给每一个进程都分配了一个标识符,通过标识符唯一确定这个进程。

在64位机器下,这个进程标识符的范围将达到2的22次方。这里的“1”号进程其实就是init进程,也就是系统进程。

<2>如何获取标识符

在了解完标识符的大小后,下面就是怎么获取的问题,在进程被创建时,系统就会自动个这个进分配进程号,我们可以通过getpid这个函数来获取一个进程的标识符(pid)

这里的pid_t其实就个进程都有一是个整数,只不过系统做了重命名。getpid可以获得当前进程的pid , getppid可以获得父进程的pid,这两个函数是系统调用的函数。每一个父进程,每一个进程都会在自己的PCB里加入自己父进程的ppid。

<3>bash进程

我们先用getpid和getppid获得父子进程的进程号,然后运行一个简单的程序。

运行该程序

我们可以发现,每次运行程序,程序的pid都不同,但是ppid都是一样,说明我们运行的程序都是由同一个父进程创建的,我们再用ps命令查看该pid对应的进程

这里我们可以看见,创建子进程的是一个bash命令,这里bash其实就是命令行解释器,这也是一个进程。

三、创建进程

创建进程我们可以使用fork命令,这里我们打开man手册,可以查看对应的信息

我们可以看见,这里的fork就是创建一个子进程,这里我们可以写一段演示代码,来了解fork函数的特性。

退出运行代码

当前ppid为815其实就是bash进程(这里我是在不同的时间段写的,所以bash的进程号会和上文的进程号不同,这个可以通过ps命令自行查看,这里我就不演示了)。这里我们可以看到会有三个输出,说明在fork创建之后,下面的语句执行了两次,分别是父进程和子进程分别执行了一次,而且他们的代码时共享的。这里的特性大家先记着,后面我将为大家一 一 介绍其中原理。

感谢各位读者的阅读,希望我的文章对各位有些帮助,如果文中有不当之处还望各位大佬指正,谢谢!!!

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

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

相关文章

机器人码垛机的技术特点与应用

随着科技的飞速发展&#xff0c;机器人技术正逐渐渗透到各个行业领域&#xff0c;其中&#xff0c;机器人码垛机在物流行业的应用尤为引人瞩目。它不仅提高了物流效率&#xff0c;降低了成本&#xff0c;更在改变传统物流模式的同时&#xff0c;为行业发展带来了重大的变革。 一…

MQ死信队列:面试题

所谓的死信队列只不过是我们自己定义的一个队列&#xff0c;注意对于这个队列只能人工干预 面试题&#xff1a;你们是如何保证消息不会丢失的 1&#xff0c;什么是死信 在RabitMQ中充当主角的就是消息&#xff0c;在不同场景下&#xff0c;消息会有不同地表现。 死信就是在…

SpringBoot学习笔记三-原理分析

SpringBoot学习笔记三-原理分析 SpringBoot自动装配1.1 案例1.2 通过注解方式管理Bean1.3 小结1.4 Enable注解1.5 Import注解1.5.1 ImportSelector实现类1.5.2 导入ImportBeanDefinitionRegistrar 1.5 EnableAutoConfiguration1.6 案例 SpringBoot自动装配 当再pom.xml中导入对…

活动发布会新闻通稿如何写?

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 撰写活动发布会的新闻通稿需要遵循一定的结构和内容要点&#xff0c;以确保信息的准确性、完整性和吸引力。以下是撰写活动发布会新闻通稿的基本步骤和建议&#xff1a; 标题&#xff1…

【智能算法】长鼻浣熊优化算法(COA)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献 1.背景 2023年&#xff0c;M Dehghani等人受到长鼻浣熊自然行为启发&#xff0c;提出了长鼻浣熊优化算法&#xff08;Coati Optimization Algorithm&#xff0c;COA&#xff09;。 2.算法原理 2.1算法思想…

C语言 函数——函数封装与程序的健壮性

目录 函数封装&#xff08;Encapsulation&#xff09; 如何增强程序的健壮性&#xff1f; 如何保证不会传入负数实参&#xff1f; 函数设计的基本原则 函数封装&#xff08;Encapsulation&#xff09; 外界对函数的影响——仅限于入口参数 函数对外界的影响——仅限于一个…

C++:内联函数inline,auto关键字,基于范围的for循环,nullpter

文章目录 1.内联函数 inline1.1 概念1.2查看方法1.3 特性1.4 题外话&#xff1a;宏 2.auto关键字2.1 auto 简介2.2 auto使用细则 3. 基于范围的for循环4. nullpter 1.内联函数 inline 1.1 概念 inline int Add(int x, int y) {return x y; } int main(){int ret 0;ret Add…

Vue input密码输入框自定义密码眼睛icon

我们用的饿了么UI组件库里,密码输入框的icon是固定不变的,如下所示: 点击"眼睛"这个icon不变,现在需求是UI给的设计稿里,密码输入框的"眼睛"有如下两种: 代码如下: <el-input:key="passwordType"ref="password"

重装系统前备份笔记

一、点查看自定义快捷键可以定义一些快速启动方式 然后用不习惯的快捷键也能在这里改 二、android studio 快捷键导出备份 导入方法&#xff1a; android studio &#xff0d;>file->import setting ->选择jar包即可 导出studio的设置方法&#xff1a; android …

假期别闲着:REST API实战演练之创建Rest API

1、创建实体类&#xff0c;模拟实体对象 创建一个类&#xff0c;模拟数据数据库来存储数据&#xff0c;这个类就叫Person。 其代码如下&#xff1a; package com.restful;public class Person {private String name;private String about;private int birthYear;public Perso…

【jQuery】jQuery框架

目录 1.jQuery基本用法 1.1选择器 1.2jQuery对象 1.3事件绑定 1.4链式编程 1.5过滤方法 1.6样式操纵 1.6属性操纵 1.7操作value 1.8查找方法 1.9类名操纵 1.10事件进阶 1.11触发事件 1.12window事件绑定 2.节点操作与动画 2.1获取位置 2.2滚动距离 2.3显示/隐…

LangChain-15 Manage Prompt Size 管理上下文大小,用Agent的方式询问问题,并去百科检索内容,总结后返回

背景描述 这一节内容比较复杂&#xff1a; 涉及到使用工具进行百科的检索&#xff08;有现成的插件&#xff09;有AgentExecutor来帮助我们执行后续由于上下文过大&#xff0c; 我们通过计算num_tokens&#xff0c;来控制我们的上下文 安装依赖 pip install --upgrade --qu…

「每日跟读」英语常用句型公式 第7篇

「每日跟读」英语常用句型公式 第7篇 1. He might as well ___ 其实可以___(也无妨) We might as well walk to school (我们其实可以走去学校) We might as well give up (我们其实可以放弃) You might as well go home (你其实可以回家) You might as well listen to h…

数据库设计说明书(Word模板)

2 数据库环境说明 3 数据库的命名规则 4 逻辑设计 5 物理设计 5.1 表汇总 5.2 表结构设计 6 数据规划 6.1 表空间设计 6.2 数据文件设计 6.3 表、索引分区设计 6.4 优化方法 7 安全性设计 7.1 防止用户直接操作数据库 7.2 用户帐号加密处理 7.3 角色与权限控制 8 数据库管理与维…

标准C库文件操作

open 系列API 和 fopen系列API的区别 1.来源: -open 是UNIX系统调用函数(包括LINUX系统)&#xff0c;返回的是文件描述符 -fopen是ANSIC标准的C语言库函数&#xff0c;在不同系统重调用不同内核的API 2.移植性: fopen 是C标准函数&#xff0c;具有良好的移植性&#xff1b; 而…

photomaker:customizing realistic human photos via stacked id embedding

PhotoMaker: 高效个性化定制人像照片文生图 - 知乎今天分享我们团队最新的工作PhotoMaker的技术细节。该工作开源5天Githubstar数已过6千次&#xff0c;已列入Github官方Trending榜第一位&#xff0c;PaperswithCode热度榜第一位&#xff0c;HuggingFace Spaces趋势榜第一位。项…

Vue2 —— 学习(四)

一、收集表单数据 &#xff08;一&#xff09;介绍 前面其实已经 学过了 v-model 双向绑定事件&#xff0c;能获取到表单中的内容到 vm 实例对象中 但是前面只是收集文本框&#xff0c;下面学习一下 各种类型表单数据收集 &#xff08;单/多 选&#xff0c;下拉框&#xff0…

关闭TED报ORA-28365: wallet is not open

关闭钱包报 实际状态是open状态&#xff1a; V$ENCRYPTION_WALLET.STATUS列如果不为CLOSED&#xff0c;重启后也不能是CLOSED&#xff0c;或者清理完成后&#xff0c;再次初始化报“Master Key已存在”错误。 获取UNDO表空间大小 SQL> show parameter undo_tablespace NA…

Elastic:加速生成式人工智能体验

作者&#xff1a;Matt Riley 搜索驱动的人工智能和开发人员工具专为速度和规模而打造。 在大型语言模型&#xff08;LLM&#xff09;和生成式 AI 的每日突破中&#xff0c;开发者站在了这场运动的最前沿&#xff0c;影响着它的方向和可能性。在这篇博客中&#xff0c;我将分享…

第十三篇【传奇开心果系列】Python自动化办公库技术点案例示例:深度解读Python自动化操作PPT

传奇开心果博文系列 系列博文目录Python自动化办公库技术点案例示例系列 博文目录前言一、 Python自动化操作PPT能力介绍二、常用库介绍三、创建新PPT示例代码四、编辑现有PPT示例代码五、批量处理示例代码六、数据驱动生成示例代码七、合并与拆分示例代码八、母版和版式操作示…