【Linux系统编程】进程概念与基本创建

在这篇文章中,我们将探讨一个重要的概念——进程。让我们逐步了解什么是进程以及如何理解它。

进程的概念

那么,进程到底是什么呢?我们可以通过观察电脑的任务管理器来直观地理解:

【Linux系统编程】进程概念与基本创建 这里展示了当前正在运行的进程,这些进程实际上就是我们当前打开的程序。

因此,我们得出结论:进程就是正在运行的程序。

但进程的本质是什么呢?我们继续探讨:

【Linux系统编程】进程概念与基本创建 我们知道,一个可执行程序本质上是一个二进制文件。当我们运行这个程序时,它会被加载到内存中,即将程序中的指令和数据加载到内存。

【Linux系统编程】进程概念与基本创建 此时,这个程序就变成了一个进程了吗?这就像一个人进入学校是否就变成了学生一样。一个人要成为学生,需要在学校里有学籍信息。同样的,一个程序被加载到内存中,并不意味着它就变成了进程。操作系统需要对内存中的多个进程进行管理。

那么,操作系统如何管理这些进程呢?

进程描述—PCB

为了描述进程,操作系统使用了一个称为进程控制块(PCB)的数据结构。

【Linux系统编程】进程概念与基本创建 操作系统对进程的管理实际上是对PCB数据结构的管理。

因此,回到我们之前的讨论:

进程可以被定义为:一个正在执行的程序及其在操作系统中的状态信息的集合,这些信息通过PCB进行管理。

task_struct—PCB的一种

在Linux中,描述进程的结构体称为task_struct。task_struct是Linux内核中的一种数据结构,包含进程的信息,并被加载到RAM中。

task_struct内容分类

task_struct中包含以下内容:

可以在内核源代码中找到它,所有运行在系统中的进程都以task_struct链表的形式存在于内核中。

我们之前提到:

PCB即进程属性的集合与可执行文件的属性有一定的关系。

查看进程

那么,如何查看进程呢?

首先,我们编写一个代码和makefile:

【Linux系统编程】进程概念与基本创建 编辑myprocess.c

【Linux系统编程】进程概念与基本创建 保存并退出。然后编写makefile:

PHP Apache和MySQL 网页开发初步 PHP Apache和MySQL 网页开发初步

本书全面介绍PHP脚本语言和MySOL数据库这两种目前最流行的开源软件,主要包括PHP和MySQL基本概念、PHP扩展与应用库、日期和时间功能、PHP数据对象扩展、PHP的mysqli扩展、MySQL 5的存储例程、解发器和视图等。本书帮助读者学习PHP编程语言和MySQL数据库服务器的最佳实践,了解如何创建数据库驱动的动态Web应用程序。

PHP Apache和MySQL 网页开发初步 385 查看详情 PHP Apache和MySQL 网页开发初步

【Linux系统编程】进程概念与基本创建

然后:

【Linux系统编程】进程概念与基本创建 生成了一个可执行程序myprocess。我们运行这个程序时,操作系统会将其加载到内存,并为其创建PCB(在Linux中是task_struct),此时它就变成了进程。

【Linux系统编程】进程概念与基本创建 我们如何查看这个进程呢?

【Linux系统编程】进程概念与基本创建 让进程继续运行,我们再打开一个终端,然后输入命令:

【Linux系统编程】进程概念与基本创建 就可以看到我们刚才运行的进程。简单解释一下这条命令(我们将在后续文章中详细讲解):

ps axj | head -1 && ps axj | grep myprocess 这是逻辑与连接的两条命令。首先,ps axj显示当前系统中所有进程的详细信息,但我们不想查看所有信息,因此通过管道连接head -1只显示ps axj输出的第一行(即表头信息)。然后,&&后面连接另一条指令,过滤出包含关键字myprocess的进程信息。下面的grep进程可以忽略,因为它也被过滤出来了,当然可以屏蔽掉。

【Linux系统编程】进程概念与基本创建 只剩下我们需要查看的进程。然后,我们再打开一个终端:

【Linux系统编程】进程概念与基本创建 再次运行该程序,然后:

【Linux系统编程】进程概念与基本创建 我们可以看到两个进程。

我们观察一下显示的信息:

【Linux系统编程】进程概念与基本创建 我们看到有一个PID,这是我们之前提到的进程的唯一标识符。两个PID不同,因此它们是不同的进程,尽管是同一个可执行程序生成的。

除了上述查看进程的方式,还有其他方法:

【Linux系统编程】进程概念与基本创建 proc实际上是process的缩写。/proc目录是Linux系统中的一个特殊目录,提供了有关当前运行进程和内核状态的信息。需要注意的是,它与普通文件不同,它不是一个真正的文件系统,而是通过内核在内存中维护的一个虚拟文件系统。只有在操作系统启动时,它才存在,并不存储在磁盘上。但在这里我们似乎没有看到myprocess。

这里有很多数字,它们代表什么呢?

【Linux系统编程】进程概念与基本创建 这些数字是蓝色的,表示它们是目录/文件夹。因此:当一个进程被创建时,操作系统会在proc目录下创建一个以新进程的PID命名的文件夹。

【Linux系统编程】进程概念与基本创建 我们可以进入查看:

【Linux系统编程】进程概念与基本创建 这里有很多内容,这些内容实际上是当前进程的相关属性信息。我们可能还不理解这些内容,但:

【Linux系统编程】进程概念与基本创建 这两个路径不就是对应程序的路径吗?这表明进程的属性与文件的属性有一定的关系。

然后:

【Linux系统编程】进程概念与基本创建 我们当前在proc目录中这个进程PID对应的目录里。前面提到,PID对应的目录是在进程创建时在proc目录下新建的。如果我们终止对应的进程(CTRL+c):

【Linux系统编程】进程概念与基本创建 就无法查看这个目录的内容了。

【Linux系统编程】进程概念与基本创建 我们也无法返回上一级目录。因为进程终止后,操作系统会在proc目录下删除这个进程PID对应的目录及其内容。因此,proc目录中的内容是动态变化的。

这篇文章到这里结束,下一篇文章我们将继续探讨与进程相关的内容。

以上就是【Linux系统编程】进程概念与基本创建的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/940983.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
在 Linux 下使用任务管理器
上一篇 2025年11月29日 18:08:53
ChatGPT写代码的知识库截止到什么时候_了解其能力边界与时效性
下一篇 2025年11月29日 18:08:55

相关推荐

  • VSCode配置MacOS C环境 详细图解VSCode搭建C++开发

    在mac++os上用vscode配置c/c++环境的关键是安装xcode command line tools以获取clang编译器和lldb调试器,然后安装vscode的c/c++扩展,接着创建项目文件夹和源文件,通过配置tasks.json定义编译任务,确保使用clang编译当前文件并生成可执行…

    2026年9月23日
    100
  • win11玩游戏时突然黑屏但电脑还在运行怎么办_win11游戏黑屏但电脑正常运行解决方案

    黑屏但主机运行时可尝试重启资源管理器、更新显卡驱动、修复系统文件及调整注册表设置。首先通过任务管理器重启Windows资源管理器;若无效,则在设备管理器中更新或回滚显卡驱动;接着以管理员身份运行命令提示符,执行sfc /scannow和DISM命令修复系统文件;最后修改注册表HKEY_CURRENT…

    2026年9月23日
    100
  • php数据如何防止CSRF跨站请求伪造_php数据表单令牌安全机制

    防止CSRF的核心是验证请求来源合法性,常用方法为表单令牌机制。1. 生成并存储CSRF令牌:用户访问表单页面时,PHP使用session_start()开启会话,通过bin2hex(random_bytes(32))生成安全令牌,存入$_SESSION[‘csrf_token&#821…

    2026年9月23日
    000
  • QQ阅读电子书官网_QQ阅读官方下载地址

    QQ阅读电子书官网是yuedu.reader.qq.com,该网站提供小说、杂志、漫画等多种数字内容,支持多设备同步与个性化阅读设置。 QQ阅读电子书官网地址在哪里?这是不少网友都关注的,接下来由PHP小编为大家带来QQ阅读电子书官网,感兴趣的网友一起随小编来瞧瞧吧! https://yuedu.3…

    2026年9月23日
    000
  • Java javac 命令与当前工作目录解析

    在Java编译环境中,javac命令的“当前目录”指的是命令被执行的物理位置,而非源文件所在的目录。理解这一概念对于正确配置和管理Java项目的编译路径至关重要,特别是当默认的classpath设置为.时,它决定了编译器查找类文件的起点。 1. javac 命令与当前工作目录的定义 在操作系统中,当…

    2026年9月23日
    100
  • VSCode调试JavaScript代码(详细图解,前端必学技能)

    掌握VSCode调试JavaScript需先安装Node.js和VSCode,创建项目及app.js文件后,配置launch.json,设置断点并启动调试,通过变量面板和控制台检查值,结合条件断点、日志点、监听表达式等技巧提升效率;调试浏览器代码需安装Chrome或Edge调试插件,配置url和we…

    2026年9月23日
    200
  • 电脑视频号直播如何拼屏?直播拼屏有什么用?

    在电脑端进行视频号直播时,使用拼屏功能可以显著增强内容的丰富度与观众的观看体验。通过将多个画面组合展示,直播更具层次感和互动性。那么,具体该如何实现电脑视频号直播的拼屏呢? 一、电脑视频号直播拼屏操作步骤 前期准备:确保电脑性能良好,满足直播流畅运行的需求;下载并安装最新版本的视频号直播助手工具;准…

    2026年9月23日
    200
  • 配置php递归函数处理递归转换_通过php递归函数转换数据格式

    递归函数通过自我调用处理树形结构,需有终止条件和问题缩小机制;示例中将扁平数组按parent_id构建为嵌套树,反之亦可展平为带层级的列表,适用于菜单、分类等无限级数据操作。 在PHP开发中,经常需要处理树形结构数据,比如分类、菜单、评论嵌套等。这类数据通常具有父子关系,且层级不确定,这时就需要使用…

    2026年9月23日
    100
  • Bash Shell 中单引号和双引号的区别

    Bash Shell 中单引号和双引号的区别Bash Shell 中单引号和双引号的区别Bash Shell 中单引号和双引号的区别Bash Shell 中单引号和双引号的区别

    在 linux 命令行中,引号是处理文件名中的空格和特殊字符的常用工具。引号在 shell 脚本中具有“特殊功能”,可能让初学者感到困惑。让我们详细探讨不同类型的引号字符及其在 shell 脚本中的用法。 有四种不同类型的引号字符: 单引号 ‘双引号 “反斜杠 反引号 ` 除…

    2026年9月23日 用户投稿
    500
  • UC浏览器官方网页版登录入口 UC浏览器最新官网链接

    UC浏览器官方网页版登录入口在官网https://www.ucweb.com/,点击顶部“网页版”选项并登录账号即可使用。 UC浏览器官方网页版登录入口在哪里?这是不少网友都关注的,接下来由PHP小编为大家带来UC浏览器最新官网链接,想了解UC浏览器功能特点的网友一起随小编来瞧瞧吧! https:/…

    2026年9月23日
    700
  • windows11如何查看和导出事件查看器日志_windows11事件日志导出方法

    首先打开事件查看器,通过Win+R输入eventvwr.msc或右键开始菜单进入;接着在Windows日志中查看系统、安全和应用程序日志,双击事件查看详情;然后可按级别、来源或时间筛选日志;最后右键日志类型选择“将所有事件另存为”,支持.evtx、.txt或.csv格式导出文件用于分析或存档。 如果…

    2026年9月23日
    600
  • 供应紧缺DDR4价格已6连涨!涨幅还要进一步扩大

    近期,DRAM市场因供需关系持续紧张,推动内存价格不断攀升。数据显示,用于智能手机、PC及数据中心服务器的DRAM价格已连续六个月上涨。 这一涨势主要源于市场对DRAM大厂停产或减产标志性产品的预期,供应端收缩加剧了整体紧缺局面。 2025年9月,主流产品DDR4 8Gb的批发价(大宗交易)约为每颗…

    2026年9月23日
    1000
  • Linux中如何查看服务日志?journalctl与syslog使用指南

    Linux中如何查看服务日志?journalctl与syslog使用指南Linux中如何查看服务日志?journalctl与syslog使用指南Linux中如何查看服务日志?journalctl与syslog使用指南Linux中如何查看服务日志?journalctl与syslog使用指南

    排查linux服务问题时,首选journalctl或syslog类系统查看日志。journalctl适用于systemd系统,可查看内核消息、服务启动输出等,支持按时间、单元、优先级过滤;syslog适用于传统系统,需服务主动发送日志,支持集中管理。掌握两者使用能有效定位问题。 在Linux系统中排…

    2026年9月23日 用户投稿
    100
  • mysql安装后怎么授权 mysql用户权限设置操作教程

    mysql安装后怎么授权 mysql用户权限设置操作教程mysql安装后怎么授权 mysql用户权限设置操作教程mysql安装后怎么授权 mysql用户权限设置操作教程mysql安装后怎么授权 mysql用户权限设置操作教程

    创建用户并授权需用create user和grant命令,常见权限包括select、insert、update、delete、create、drop和all privileges,修改权限可用grant或revoke,设置时应注意作用范围、远程访问限制和密码安全。1. 创建用户使用create us…

    2026年9月23日 用户投稿
    1000
  • 优化 Laravel Nova 动作响应消息的持久性与交互性

    本文探讨了 Laravel Nova 动作响应消息(toast 提示)持续时间过短的问题,尤其对于耗时较长的操作,默认提示难以满足用户反馈需求。我们提出并详细介绍了如何利用 Laravel Nova 4 的通知功能,实现持久化且可交互的用户通知,从而有效解决传统 toast 消息的局限性,提升用户体…

    2026年9月23日
    400
  • Reflection AI 完成 20 亿美元融资,打造“开放智能”

    美国人工智能初创企业 reflection ai 宣布成功募集 20 亿美元资金,其中英伟达领衔投资 8 亿美元,推动公司估值跃升至 80 亿美元。这家成立仅一年的科技新星,致力于打造“人人可及的前沿开放智能(open intelligence)”。 Reflection AI 表示,已集结一支由顶…

    2026年9月23日
    500
  • win11开机PIN码登录选项消失了怎么办_win11PIN码登录选项丢失修复方法

    首先尝试切换登录方式重置PIN,若无效则通过命令提示符启用管理员账户,再检查本地组策略设置并清除NGC文件夹以重建PIN凭据,最终恢复PIN登录功能。 如果您尝试在Windows 11开机时使用PIN码登录,却发现登录选项中缺少PIN码入口,这通常是由系统临时故障、策略设置或账户同步问题导致的。此问…

    2026年9月23日
    000
  • [272]如何把Python脚本导出为exe程序

    [272]如何把Python脚本导出为exe程序[272]如何把Python脚本导出为exe程序[272]如何把Python脚本导出为exe程序[272]如何把Python脚本导出为exe程序

    文章目录:一. PyInstaller简介二. PyInstaller在Windows下的安装三. 打包四. 小实例(Windows下) 附加:pyinstaller简介 PyInstaller能够将Python脚本打包成可执行程序,使得在没有Python环境的机器上也可以运行这些程序。 PyIns…

    2026年9月23日 用户投稿
    100
  • PHP数组中内嵌JSON字符串值的解析与访问教程

    本教程详细介绍了如何在PHP中高效地解析和访问包含JSON格式字符串的数组元素。通过使用json_decode()函数,可以将这些JSON字符串转换为可操作的PHP数组或对象,从而轻松提取所需的shortname和fullname等字段值,并提供了遍历和直接访问的示例代码及注意事项。 在php开发中…

    2026年9月23日
    100
  • 火狐浏览器官方最新版 Firefox电脑版安装入口

    火狐浏览器官方最新版Firefox电脑版安装入口在https://www.mozilla.org/zh-CN/firefox/new/,该页面提供具备强大隐私保护、高效渲染和跨设备同步功能的最新版本下载。 火狐浏览器官方最新版 Firefox电脑版安装入口在哪里?这是不少网友都关注的,接下来由PHP…

    2026年9月23日
    200

发表回复

登录后才能评论
关注微信