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

进程的属性

tips:

task_struct就是linux下的PCB

操作系统不相信任何外部用户,而是只提供窗口,不可能直接与用户打交道,而是通过操作系统

tast_struct用来描述所有进程,用来管理

; 和 && 可以同时跑两个命令

进程可以分为两种

一种跑完自动退        

一种要用户自己退出       常驻进程

PID

,进程的标识码,与其他进程区分

同一程序,关闭又打开后PID会变

但同一次启动中,PID是保持不变的

库函数获取自己pid

库函数头文件:sys/types.h

pid_t getpid(void)

pid_t getppid(void)

kill -9  pid              结束进程

ps ajs 查看所有进程

根目录下proc目录

会根据实际进程情况实时更新

/proc目录不是磁盘级文件

关闭电脑,/proc数据会消失

启动电脑,/proc会重新加载

/proc目录不存储在磁盘,不占用磁盘空间,而是在内存,只是在磁盘提供了类似快捷方式的引用。

/proc/[pid]  存放了进程属性

exe属性相当于getppid返回值

cwd属性,

非常重要

current work dir  当前工作目录

cwd记录进程文件启动时路径

chdir(newdir) 更改本程序cwd为dir

多进程

命令行中,执行命令/程序,本质是bash进程,创建的子进程,子进程执行了我们的代码

xshell开了几个窗口,就有几个bash

fork

是个库函数, 要systypes.h头文件

使用系统调用,创建进程

pid_t fork(void)

fork后,会变成两个进程,两个进程为父子关系,代码是共享的,数据是各自私有一份的

fork在父子进程中返回值不同

进程=内核数据结构+代码和数据

fork后子进程会继承父进程代码(代码共享)

进程间数据独立,保证了进程间互不干扰,有很强独立性,即便是父子,即使是全局变量。

创建多进程,多进程间应为一父对多子,这样父可有多子的pid,方便管理

创建多进程demo

#include <iostream>
#include <vector>
#include <sys/types.h>
#include <unistd.h>
using namespace std;const int num = 10;void SubProcessRun()
{while(true){cout << "I am sub process, pid: " <<getpid() <<" ,ppid: " << getppid() << std::endl;sleep(5);}
}int main()
{vector<pid_t> allchild;for(int i = 0; i<num; i++){pid_t id = fork();if(id == 0){// 子进程SubProcessRun();}// 这里谁执行?父进程一个人allchild.push_back(id);}// 父进程cout << "我的所有的孩子是:";for(auto child: allchild){cout << child << " ";}cout << endl;sleep(10);while(true){cout << "我是父进程,pid: " <<getpid() << endl;sleep(1);}return 0;
}

理解创建子进程

创建子进程时,子进程的task_struct是拷贝自父进程的,之后调整新的task_struct部分属性

板书

pid属性:

相关文章:

进程的属性

tips&#xff1a; task_struct就是linux下的PCB 操作系统不相信任何外部用户&#xff0c;而是只提供窗口&#xff0c;不可能直接与用户打交道&#xff0c;而是通过操作系统 tast_struct用来描述所有进程&#xff0c;用来管理 &#xff1b; 和 && 可以同时跑两个命令 进…...

Git 中的refs

在 Git 中&#xff0c;refs 是用来存储 Git 对象&#xff08;如提交、树、标签等&#xff09;的引用。每个 ref 都是一个指针&#xff0c;指向一个特定的 Git 对象。以下是 Git 中几种常见的 refs 及其含义&#xff1a; 1. refs/heads/ 表示&#xff1a;本地分支。 用途&…...

408算法题leetcode--第六天

58. 最后一个单词的长度 58. 最后一个单词的长度思路&#xff1a;反向遍历时间&#xff1a;O(n)&#xff1b;空间&#xff1a;O(1) class Solution { public:int lengthOfLastWord(string s) {int id s.size() - 1;while(s[id] ){--id;}int ret 0;while(id > 0 &&…...

ubuntu64位系统无法运行32位程序的解决办法

在 64 位的 Ubuntu 系统上运行 32 位程序时&#xff0c;如果出现问题&#xff0c;可能是由于缺少 32 位库支持。以下步骤可以帮助你解决这一问题&#xff1a; 1. 启用 32 位架构 首先&#xff0c;确保系统支持 32 位架构。你可以通过以下命令添加 32 位架构支持&#xff1a; …...

深入理解Go语言中的并发封闭与for-select循环模式

在现代编程中,并发已经成为提高程序性能和响应能力的关键手段。然而,在并发环境下,如何安全地访问和操作共享数据却是一大挑战。本文将深入探讨Go语言中的**封闭(confinement)**技术,以及常见的for-select循环模式,帮助您编写更高效、更安全的并发代码。 并发编程中的安…...

Java学习Day42:骑龙救!(springMVC)

springMVC与sevlet都是对应表现层web的&#xff0c;但是越复杂的项目使用SpringMVC越方便 基于Java实现MVC模型的轻量级web框架 目标&#xff1a; 小案例&#xff1a; 1.导入依赖 spring-context: 提供 Spring 框架的核心功能&#xff0c;如依赖注入、事件发布和其他应用上…...

原型模式详细介绍和代码实现

&#x1f3af; 设计模式专栏&#xff0c;持续更新中&#xff0c; 欢迎订阅&#xff1a;JAVA实现设计模式 &#x1f6e0;️ 希望小伙伴们一键三连&#xff0c;有问题私信都会回复&#xff0c;或者在评论区直接发言 Java实现原型模式 介绍: 原型模式&#xff08;Prototype Patte…...

ArcGIS Pro SDK (十三)地图创作 5 图层样式

ArcGIS Pro SDK (十三)地图创作 5 图层样式 文章目录 ArcGIS Pro SDK (十三)地图创作 5 图层样式1 风格管理1.1 如何按名称获取项目中的样式1.2 如何创建新样式1.3 如何向项目添加样式1.4 如何从项目中删除样式1.5 如何将样式项添加到样式1.6 如何从样式中删除样式项1.7 如…...

【Python报错已解决】 Requests.exceptions.ProxyError: HTTPSConnectionPool

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 专栏介绍 在软件开发和日常使用中&#xff0c;BUG是不可避免的。本专栏致力于为广大开发者和技术爱好者提供一个关于BUG解决的经…...

现在量化中普遍使用QMT和PTrade?哪家可以同时提供QMT/PTrade?

QMT的特点 全面的功能集成&#xff1a; QMT集成了行情显示、策略研究、交易执行和风控管理于一体&#xff0c;为投资者提供了一站式的量化交易解决方案。 高效的交易执行能力&#xff1a; 通过全内存交易实现低延迟的交易执行&#xff0c;单笔延时小于1ms&#xff0c;确保了交易…...

【计算机网络】UDP 协议详解及其网络编程应用

文章目录 一、引言二、UDP1、UDP的协议格式2、UDP 报文的解包和分用3、UDP面向数据报的特点 三、UDP输入输出四、UDP网络编程 一、引言 UDP&#xff08;User Datagram Protocol&#xff0c;用户数据报协议&#xff09;是一种网络通信协议&#xff0c;它属于传输层的协议。是一…...

基于ESP32S3的链接大语言模型对话模块

本实物模块从实物外观、模块组成、API申请及功能说明四部分来介绍这款基于ESP32S3的大语言模型对话模块。 1、实物外观 2、模块介绍 本硬件平台主要由三个模块组成&#xff0c;包括MAX9814录音模块、MAX98357音频功放模块和ESP32S3模块。如下图所示。 MAX9814录音模块&#…...

Cpp输出多字符常量警告

Cpp输出多字符常量警告 Cpp中用单引号(single quotes)表示单个字符(single character)&#xff0c;例如a&#xff0c;$&#xff0c;用双引号(double quotes)表示字符串文本(text)&#xff0c;例如"Hello World! " 当在一个单引号里面存在多个字符时&#xff0c;Cpp…...

Maven从入门到精通(二)

一、什么是pom.xml pom.xml是Maven项目的核心配置文件&#xff0c;它是 项目对象模型 - Project Object Model&#xff08;POM&#xff09;的缩写。POM定义了项目的所有属性&#xff0c;包括项目的名称、版本、依赖关系、构建配置等。使用pom.xml&#xff0c;我们可以轻松地管…...

【Kubernetes】常见面试题汇总(二十四)

目录 71.假设一家公司想要修改它的部署方法&#xff0c;并希望建立一个更具可扩展性和响应性的平台。您如何看待这家公司能够实现这一目标以满足客户需求&#xff1f; 72.考虑一家拥有非常分散的系统的跨国公司&#xff0c;期待解决整体代码库问题。您认为公司如何解决他们的问…...

最低成本的游戏串流方案分享 如何自己打造云电脑?

今天教大家如何最低成本实现串流 出门在外也可以随时随地游玩端游大作 硬件准备&#xff1a;一台电脑 手机/平板一台 软件&#xff1a;Gameviewer远程 为啥不用moonlight等其他软件呢 因为设置公网穿透等复杂操作对小白来说不太友好 而GameViewer从安装到使用仅需一键 对比同类…...

python运行时错误:找不到fbgemm.dll

python运行时错误&#xff1a;找不到fbgemm.dll 报错&#xff1a; OSError: [WinError 126] 找不到指定的模块。 Error loading "D:\program\py\312\Lib\site-packages\torch\lib\fbgemm.dll" or one of its dependencies. 原因是Windows下缺失&#xff1a;libomp140…...

给虚拟机linux系统安装交叉编译工具链

我们在电脑上写的代码编译生成的是X86架构的二进制文件&#xff0c;只能在X86平台上运行&#xff0c;而开发板是ARM架构因此需要安装交叉编译链工具&#xff0c;这样在电脑上写的代码交叉编译之后生成的是ARM架构的二进制文件。 绿色的字眼是与本文无关的只是这样有助于我们的…...

Redhat 7,8系(复刻系列) 一键部署Oracle21c-xe rpm

Oracle21c-xe前言 无论您是开发人员、DBA、数据科学家、教育工作者,还是仅仅对数据库感兴趣,Oracle Database Express Edition (XE) 都是理想的入门方式。它是全球企业可依赖的强大的 Oracle Database,提供简单的下载、易于使用和功能齐全的体验。您可以在任何环境中使用该…...

Web植物管理系统-下位机部分

本节主要展示上位机部分&#xff0c;采用BSP编程&#xff0c;不附带BSP中各个头文件的说明&#xff0c;仅仅是对main逻辑进行解释 main.c 上下位机通信 通过串口通信&#xff0c;有两位数据验证头&#xff08;verify数组中保存对应的数据头 0xAA55) 通信格式 上位发送11字节…...

k8s从入门到放弃之Ingress七层负载

k8s从入门到放弃之Ingress七层负载 在Kubernetes&#xff08;简称K8s&#xff09;中&#xff0c;Ingress是一个API对象&#xff0c;它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress&#xff0c;你可…...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引&#xff0c;可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度&#xff08;创建索引的主要原因&#xff09;。3. 可以加速表和表之间的连接&#xff0c;实现数据的参考完整性。4. 可以在查询过程中&#xff0c;…...

工程地质软件市场:发展现状、趋势与策略建议

一、引言 在工程建设领域&#xff0c;准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具&#xff0c;正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?

Otsu 是一种自动阈值化方法&#xff0c;用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理&#xff0c;能够自动确定一个阈值&#xff0c;将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建

华为云FlexusDeepSeek征文&#xff5c;DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色&#xff0c;华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型&#xff0c;能助力我们轻松驾驭 DeepSeek-V3/R1&#xff0c;本文中将分享如何…...

SpringTask-03.入门案例

一.入门案例 启动类&#xff1a; package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...

全志A40i android7.1 调试信息打印串口由uart0改为uart3

一&#xff0c;概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本&#xff1a;2014.07&#xff1b; Kernel版本&#xff1a;Linux-3.10&#xff1b; 二&#xff0c;Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01)&#xff0c;并让boo…...

【Oracle】分区表

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...

代码随想录刷题day30

1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币&#xff0c;另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额&#xff0c;返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...

安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲

文章目录 前言第一部分&#xff1a;体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分&#xff1a;体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...