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(); // 获取进程的唯一IDprintf("before fork : pid = %d\n", pid);retpid = fork(); // fork函数创建一个子进程,返回两个值,在父进程返回子进程的ID//在子进程返回0pid2 = getpid(); // 父子进程分别获得各自的IDif(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。

 

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

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

相关文章

【代码随想录】【算法训练营】【第17天】 [110]平衡二叉树 [257]二叉树的所有路径 [404]左叶子之和

前言 思路及算法思维&#xff0c;指路 代码随想录。 题目来自 LeetCode。 day 17&#xff0c;又是一个令人愉快的周五~ 题目详情 [110] 平衡二叉树 题目描述 110 平衡二叉树 解题思路 前提&#xff1a;平衡二叉树&#xff1a;左右子树高度差不超过1, 思路&#xff1a;…

短视频商城全套源码:开启电商新纪元

随着数字媒体的快速发展&#xff0c;短视频平台已经成为人们获取信息、娱乐和社交的重要渠道。在这样一个大背景下&#xff0c;短视频商城的兴起&#xff0c;无疑为电商行业带来了新的机遇和挑战。本文将探讨短视频商城全套源码的重要性&#xff0c;以及它如何助力商家和开发者…

并发编程常见面试题

文章目录 为什么要使用线程池为什么不建议使用 Executors静态工厂构建线程池synchronized的实现原理Synchronized和Lock的区别什么是AQS什么是阻塞队列 为什么要使用线程池 关于线程池的作用和线程池的执行流程参考&#xff1a;java线程池 为什么不建议使用 Executors静态工厂…

ffmpeg3.1.1版本连接ftp服务器失败

发现这个问题是在ffmpeg4之后修复的&#xff1a; 原因在于libavformat文件下的ftp.c文件&#xff1a; 修改方法&#xff1a;加入在TCP控制连接时加入应答代码202&#xff1a; static int ftp_features(FTPContext *s) {static const char *feat_command "FEAT\r\…

cfa二级大神复习经验分享系利(七)

这是我第二次参加二级考试&#xff0c;去年第一次参加二级&#xff0c;虽然考完感觉还不错&#xff0c;但最终成绩是Band 8&#xff0c;距离通过还是差了不少&#xff0c;在郁闷了几天后&#xff0c;重新振作&#xff0c;终于在第二次考试中稳稳通过。在考试经验总结之前&#…

云HIS医院信息管理系统源码(二级、乡镇、民营医院):云HIS系统与传统HIS系统的不同

云HIS医院信息管理系统源码&#xff08;二级、乡镇、民营医院&#xff09;&#xff1a;云HIS系统与传统HIS系统的不同 什么是医疗SaaS软件平台&#xff1f; HIS-SaaS&#xff08;Hospital Information System Software as a Service&#xff09;是一种医院信息系统的服务模式&…

引领数字创作新潮流——Autodesk Maya 2025 for Mac/win

作为全球领先的三维动画和视觉特效软件&#xff0c;Autodesk Maya 2025 引领着数字创作的新潮流。无论是电影、游戏、电视剧还是虚拟现实项目&#xff0c;Maya 2025 都是创作者们不可或缺的强大工具。 Maya 2025 在功能上持续创新&#xff0c;提供了一系列强大的工具和功能&am…

npm是什么 ?

npm是Node.js生态系统的基石&#xff0c;它不仅让你能够轻松安装和管理软件包&#xff08;或称为“模块”&#xff09;&#xff0c;还提供了丰富的功能来增强你的开发流程。想象npm如同一个巨大的工具箱&#xff0c;里面装满了各种工具&#xff0c;从基础的螺丝刀到高级的电子测…

Delphi编程之旅:从零开始到实战精通

Delphi编程之旅&#xff1a;从零开始到实战精通 Delphi基础&#xff1a;启动你的编程引擎安装与环境搭建第一个程序&#xff1a;“Hello, Delphi!” Pascal语言精要基本语法面向对象编程 实战案例&#xff1a;构建一个简易记事本应用UI设计功能实现保存与加载文本 安全性与性能…

【网络与并发编程】

网络与并发编程 1. 网络编程1.1 网络基础知识1.1.1 什么是网络1.2.3 网络功能1.2.3 网络分类1.2.4 网络性能衡量指标1.2.5 网络编程中的几个关键概念1.2.6 网络通信要解决的问题1.2.7 网络通信协议1.1.8 网络通信标准1.1.9 通信地址 1.2 UDP 传输方法1.2.1 套接字简介1.2.2 UDP…

MyBatis系统学习篇 - MyBatis的缓存

MyBatis的缓存实现原理主要基于三级缓存机制&#xff0c;包括一级缓存&#xff08;本地缓存&#xff09;、二级缓存&#xff08;全局缓存&#xff09;和三级缓存&#xff08;跨会话缓存&#xff09;。这个缓存在我们实际开发中可以避免我们查询重复的数据&#xff0c;在一定程度…

rust 学习--所有权

所有权是rust的核心功能。 Rust 是通过所有权来管理内存回收的 栈&#xff08;Stack&#xff09; 栈是后进先出的 栈中存储的数据在编译时是固定内存大小的数据 数据移除栈叫出栈&#xff0c;数据存入栈叫入栈 入栈要比在堆上分配内存块&#xff0c;入栈时分配器无需为存储…

【全开源】智能名片系统源码(Fastadmin+ThinkPHP和Uniapp)

数字时代的新名片&#xff0c;连接未来的桥梁 引言 在数字化浪潮的推动下&#xff0c;传统名片已经逐渐淡出人们的视线。取而代之的是智能名片系统&#xff0c;它以其高效、便捷和智能化的特点&#xff0c;成为了商务交流的新宠。而智能名片系统源码&#xff0c;作为其核心驱…

Spring Cloud应用框架

一、引言 随着微服务架构的兴起&#xff0c;如何有效地管理和协调微服务之间的通信、配置、服务发现、熔断等成为了关键问题。Spring Cloud作为一套微服务解决方案&#xff0c;提供了丰富的组件和功能&#xff0c;帮助开发者快速构建和部署微服务应用。本文将详细介绍Spring C…

SAP销售手工发票录入

销售手工发票录入用于处理未启用 SD 模块标准处理流程的零星销售业务。 科目设置 收入类科目&#xff1a;设置税务类型&#xff0c;允许含税/不含税过账应收账款: 留空。其他应收款的设置类似 编辑选项设置 在中国&#xff0c;编辑选项一般设置为基于总额计税。使用事务码 FB…

2024 Etsy替代品:推荐探索手工艺品销售的其他平台

在寻找一个适合销售手工艺品的平台时&#xff0c;Etsy可能是许多人首先想到的选择。然而&#xff0c;除了Etsy之外&#xff0c;还有许多其他平台可以帮助手工艺品制作者推广和销售他们的作品。在本篇文章中&#xff0c;我们将探索一些Etsy的替代品&#xff0c;为您提供更多销售…

操作系统课程实验3-可变分区存储管理

操作系统课程实验3-可变分区存储管理 一、实验介绍 1.1 实验目的 加深对可变分区存储管理的理解&#xff1b;提高用C语言编制大型系统程序的能力&#xff0c;特别是掌握C语言编程的难点&#xff1a;指针和指针作为函数参数&#xff1b;掌握用指针实现链表和在链表上的基本操作…

React Native 之 图片使用(六)

静态图片资源 React Native项目中&#xff0c;图片文件的查找会和 JS 模块的查找方式一样。它提供了一个统一的方式来管理 iOS 和 Android 应用中的图片。要往 App 中添加一个静态图片&#xff0c;只需把图片文件放在代码文件夹中某处&#xff0c;然后像下面这样去引用它&…

如何设计足够可靠的分布式缓存体系,以满足大中型移动互联网系统的需要?no.31

传统 CAP 的突破 随着分布式系统的不断演进&#xff0c;会不断遇到各种问题&#xff0c;特别是当前&#xff0c;在大中型互联网系统的演进中&#xff0c;私有云、公有云并行发展且相互融合&#xff0c;互联网系统的部署早已突破单个区域&#xff0c;系统拓扑走向全国乃至全球的…

新书推荐: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&#…