Linux 进程相关概念

用以下指令查找正在运行的进程,并使用 grep 过滤出包含 "int" 的行。 "ps -aux" 显示当前系统上所有用户的进程列表,而 grep 命令则筛选出包含 "int" 的行。

ps -aux|grep int

p代表process进程

1.什么是程序,什么是进程,有什么区别?

        程序是静态的概念,gcc xxx.c –o pro 磁盘中生成pro文件,叫做程序。

        进程是程序的一次运行活动, 通俗点意思是程序跑起来了,系统中就多了一个进程。

2.如何查看系统中有哪些进程?

        a.使用ps指令查看 实际工作中,配合grep来查找程序中是否存在某一个进程。

        b.使用top指令查看,类似windows任务管理器。

3.什么是进程标识符?

        每个进程都有一个非负整数表示的唯一ID, 叫做pid,类似身份证

        Pid=0:  称为交换进程(swapper) 作用—进程调度。

        Pid=1:init进程 作用—系统初始化。

编程调用getpid函数获取自身的进程标识符 getppid获取父进程的进程标识符。

4.什么叫父进程,什么叫子进程?

        进程A创建了进程B 那么A叫做父进程,B叫做子进程,父子进程是相对的概念,理解为人类中的父子关系。

C程序的存储空间分配可以分为以下几个部分:

  1. 代码区(Text Segment):代码区存储程序的机器代码,也就是编译后的可执行指令。这部分通常是只读的,并且在程序运行时不可修改。

  2. 数据区(Data Segment):数据区包含两部分:

    • 全局初始化数据区(Initialized Data Segment):存储全局变量和静态变量以及被显式初始化的变量。
    • 全局未初始化数据区(Uninitialized Data Segment):也称为 BSS 区(Block Started by Symbol),存储未初始化的全局变量和静态变量,这些变量在程序开始执行之前会被系统初始化为零或空值。
  3. 堆区(Heap Segment):堆区是动态分配的内存区域,在程序运行时由程序员手动分配和释放。通过函数如 malloc()calloc()realloc() 来进行内存分配,通过 free() 来释放已分配的内存。堆区通常在程序运行时动态增长和缩减。

  4. 栈区(Stack Segment):栈区用于存储函数的局部变量、函数参数、以及函数调用的返回地址等信息。栈是一种先进后出的数据结构,它的大小是固定的,由系统预先分配。栈区的内存分配和释放是由系统自动管理的,通过函数调用和返回来控制栈上数据的生命周期。

  5. 命令行参数和环境变量:这部分存储了程序运行时传递给它的命令行参数和环境变量。

调用fork函数后发生了什么?

  1. 创建子进程:操作系统会复制调用进程(父进程)的地址空间,包括代码段、数据段等。这样就创建了一个全新的子进程,但是它拥有与父进程完全相同的执行状态和代码。

  2. 分配新的进程ID:子进程会被分配一个新的进程ID,这个ID是操作系统为了标识进程而分配的唯一标识符。

  3. 父子进程返回:在父进程中,fork() 返回子进程的进程ID,这个值是一个正整数,表示新创建的子进程的进程ID。而在子进程中,fork() 返回0,用于标识它是子进程。

  4. 执行后续代码:在父子进程中,fork() 后面的代码会继续执行。由于父子进程在此时的状态完全相同,它们会从同一个地方继续执行代码。

  5. 并发执行:父子进程会并发执行各自的代码。它们是独立的进程,各自有自己的执行上下文和内存空间。因此,它们可以并行执行不同的任务。

#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>

int main()
{
        pid_t pid;
        pid_t pid2;
        pid_t retpid;

        pid = getpid(); // 获取进程的唯一ID
        printf("before fork : pid = %d\n", pid);

        retpid = fork(); // fork函数创建一个子进程,返回两个值,在父进程返回子进程的ID
        //在子进程返回0

        pid2 = getpid(); // 父子进程分别获得各自的ID

        if(retpid > 0){
                printf("this is father print%d, retpid = %d\n", pid2, retpid);
        }else{
                printf("this is child print, child pid = %d, retpid = %d\n", pid2, retpid);
        }

        return 0;
}

结果:父进程和子进程的ID不同, 父进程的retpid是子进程的ID,子进程的retpid是0。

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

美国教育数据分析

文章目录 第1关&#xff1a;认识数据第2关&#xff1a;数据预处理第3关&#xff1a;数学成绩预测 第1关&#xff1a;认识数据 编程要求 根据提示&#xff0c;在右侧Begin-End区域补充代码&#xff0c;查看数据属性名称。 测试说明 程序会调用你实现的方法&#xff0c;查看数据…

【C++题解】1881. 循环输出1~100之间的每个数

问题&#xff1a;1881. 循环输出1~100之间的每个数 类型&#xff1a;循环 题目描述&#xff1a; 请循环输出 1∼100之间的每个整数&#xff0c;输出时每行输出1 个数。 比如&#xff0c;输出结果的前 10 个数是这样的&#xff1a; 1 2 3 4 5 6 7 8 9 10 …… 输入&#xff1…

新书推荐:6.1 if语句

计算机语言和人类语言类似&#xff0c;人类语言是为了解决人与人之间交流的问题&#xff0c;而计算机语言是为了解决程序员与计算机之间交流的问题。程序员编写的程序就是计算机的控制指令&#xff0c;控制计算机的运行。借助于编译工具&#xff0c;可以将各种不同的编程语言的…

MQTT物联网关

在物联网&#xff08;IoT&#xff09;日益融入我们生活与工作的今天&#xff0c;如何高效、安全地实现设备间的信息交换成为了行业的关键议题。MQTT&#xff0c;作为轻量级的发布/订阅消息传输协议&#xff0c;凭借其高效性、实时性和可扩展性&#xff0c;在物联网领域占据了举…

How to record real IP of user on nginx?

应用(Docker)使用WAF接入internet&#xff0c;nginx log 查不到用户的真实IP地址&#xff0c;于是修改nginx 设置&#xff0c;以下都是在linux下操作&#xff1a; 由于没有WAF权限&#xff0c;所以在 docker上启动了两个container&#xff0c;一个模拟WAF(r-proxy)&#xff0c…

uniapp高校二手书交易商城回收系统 微信小程序python+java+node.js+php

每年因为有大量的学生在接受教育&#xff0c;每到大学毕业季的时候&#xff0c;所使用的大量书籍对他们自己来说&#xff0c;很多是没有用&#xff0c;同时由于书籍多和不方便携带&#xff0c;导致很多大学生在毕业时将教材直接丢弃是在校大学生处理已用教材的一种主要方式。然…

LoadBalancer

一、手写随机负载均衡 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId> </dependency><!--引入nacos discovery--> <dependency><groupId>com…

新书推荐:6.2 else if语句

本节必须掌握的知识点&#xff1a; 示例代码二十 代码分析 汇编解析 ■if语句表达形式3 if(表达式1) statement1 else if(表达式2) statement2 else if(表达式3) statement3 …… else statementN 解析&#xff1a; 如果表达式1非0&#xff0c;则执行statement1&#…

进化计算引领深度学习新纪元

《进化深度学习》介绍了进化计算(EC)&#xff0c;并为你提供了一套实用的技术工具&#xff0c;你可以在整个深度学习过程中应用这些技术。本书提供了遗传算法和进化计算方法在网络拓扑、生成模型、强化学习等方面的应用。通过交互式的Colab notebook使你有机会在探索过程中进行…

手机端如何访问本地vue+vite项目,实现实时调试?

一、应用场景 h5&#xff08;vuevite&#xff09;嵌入app后&#xff0c;出现某种问题时&#xff0c;需要每次发布坏境后&#xff0c;才能才看效果&#xff0c;这种来回很耗时间&#xff0c;本文章在于解决手机端直接访问本地启动应用项目&#xff0c;无需重复发布坏境 二、实…

服务器数据恢复—同友存储raid5阵列上层虚拟机数据恢复案例

服务器数据恢复环境&#xff1a; 某市教育局同友存储&#xff0c;存储中有一组由数块磁盘组建的raid5阵列&#xff0c;存储空间划分若干lun。每个lun中有若干台虚拟机&#xff0c;其中有数台linux操作系统的虚拟机为重要数据。 存储结构&#xff1a; 服务器故障&#xff1a; r…

【C语言】结构体内存对齐:热门面试话题

&#x1f525;引言 书接上文&#xff0c;我们了解关于结构体的基本知识&#xff0c;这篇将深入剖析结构体中一个重要的知识点:内存对齐 关于内存对齐是属于热门面试话题&#xff0c;对此单独放在一篇来分享 &#x1f308;个人主页&#xff1a;是店小二呀 &#x1f308;C语言笔记…

selenium 爬取今日头条

由于今日头条网页是动态渲染&#xff0c;再加上各种token再验证&#xff0c;因此直接通过API接口获取数据难度很大&#xff0c;本文使用selenium来实现新闻内容爬取。 selenium核心代码 知识点&#xff1a; 代码中加了很多的异常处理&#xff0c;保证错误后重试&#xff0c;…

kyuubi/spark3的catalog 多个数据源配置

在使用kyuubi 的时候&#xff0c;有多个集群&#xff0c;老集群上是hive2,新集群hive3 ,想通过一个网关访问多个集群&#xff0c;或者通过jdbc访问mysql&#xff0c;oracle的数据&#xff0c;这样不用来回数据导入导出。spark 支持跨库访问数据&#xff0c;在spark 中提供两种方…

软件设计师备考笔记(九):数据库技术基础

文章目录 一、基本概念二、数据模型&#xff08;一&#xff09;基本概念&#xff08;二&#xff09;E-R模型&#xff08;三&#xff09;数据模型 三、关系代数&#xff08;一&#xff09;关系数据库的基本概念&#xff08;二&#xff09;五种基本的关系代数运算&#xff08;三&…

日处理100吨污水处理设备安装需要多久

日处理100吨污水处理设备的安装时间取决于多种因素&#xff0c;包括设备的复杂性、安装地点的条件、所需的基础设施建设、以及安装团队的经验和效率等。以下是一个大致的安装时间框架和相关的考虑因素&#xff1a; 前期准备&#xff1a; 现场勘查和设计&#xff1a;1-2周&#…

创新力作 焕新首发丨捷顺科技·捷曜系列智慧停车新品全新上市

2024捷顺科技智慧停车全家族新品全面上市 全新外观、全新特性、全新体验 新控制机、新道闸、新超眸相机... 每款新品都有哪些功能亮点 带您一探究竟

DOS学习-目录与文件应用操作经典案例-xcopy

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一.前言 二.使用 三.案例 一.前言 xcopy命令是DOS系统中一个强大的文件和目录复制工具&…

变电站设备状态识别无人值守巡检系统

变电站设备状态识别无人值守巡检系统基于智能视频分析技术和深度学习技术&#xff0c;变电站设备状态识别无人值守巡检系统通过现场已经装好的监控摄像机实时对变电站的设备状态进行监测识别&#xff0c;例如&#xff0c;对隔离开关的分合状态进行实时检测、识别开关柜刀闸的位…

医疗废水处理一体化设备维护成本有哪些

医疗废水处理一体化设备的维护成本主要包括以下几个方面&#xff1a; 能源消耗&#xff1a; 包括电力、燃气或其他能源的消耗&#xff0c;用于驱动设备运行&#xff0c;如泵、风机、加热器等。 化学品费用&#xff1a; 用于消毒、中和、沉淀等化学处理的药剂费用&#xff0…