Linux系统进程与进程间通信

news2024/9/19 10:06:39
      Linux是一个多用户、多任务的操作系统,支持多个进程同时运行。进程是Linux系统中的基本单元,它们负责执行各种任务,如网页浏览、文件下载、程序运行等。在Linux中,进程是由一个或多个线程组成的,线程是进程的基本执行单元。   

一.进程基础

        进程指正在运行的程序,如下图示,是资源分配的最小单位,可以通过“ps ”或“ top ”等命令查看正 在运行的进程,线程是系统的最小调度单位,一个进程可以拥有多个线程,同一进程里的线程可以共享此 进程的同一资源。

 

每个进程都有一个唯一的标识符,既进程 ID ,简称 pid 进程间的通信的几种方法?
        1. 管道通信:有名管道,无名管道
        2 .信号通信:信号的发送,信号的接受,信号的处理
        3 .IPC 通信:共享内存,消息队列,信号灯
        4 .Socket 通信
进程的三种基本状态以及转换 :

 

 

二.进程创建 

        所有的进程都是由其他进程创建(除了 pid 0 号的 idle 进程), pid 号为 1 init 进程是系统启动后 运行的第一个进程,是所有进程的父进程,init 进程会初始化一部分系统服务,创建其他进程。
        创建新进程的那个进程称为父进程,新进程称为子进程,父进程和子进程拥有相同的代码段数据段,有各自独立的地址空间。采用写时拷贝技术,即创建的新进程不会立即把父进程的资源空间复制过来,只有在修改时才会复制资源,另外父进程挂起的信号和文件锁不会被子进程继承。子进程结束后,它的父进程要回收它的资源,否则就会成为僵尸进程 。如果父进程先结束,子进程会被 init 进程收养,称为孤儿进程。

 

 (1)fork()函数

        用于创建一个与父进程完全相同的子进程。子进程是父进程的副本,拥有自己的地址空间、文件描述符和资源,但共享父进程的部分信息,如打开的文件描述符、环境变量等。fork()函数的原型是pid_t fork(void);,它返回两次,一次在父进程中返回子进程的PID,一次在子进程中返回0。

 (2)父进程中创建一个子进程

         1.代码

#include <stdio.h>
#include <unistd.h>
int main(void)
{
    pid_t pid;
    pid = fork();
    if (pid < 0){
        printf("fork is error \n");
        return -1;
    }
    //父进程
    if (pid > 0)
    {
        printf("This is parent,parent pid is %d\n", getpid());
    }
    //子进程
    if (pid == 0)
    {
        printf("This is child,child pid is %d,parent pid is %d\n", getpid(), getppid());
    }
    return 0;
}

        2.结果打印

 

三.exec()函数

        在当前进程中执行一个新的程序。它会替换当前进程的代码和数据段,但保留原有的堆和栈。exec()函数的原型是int exec(const char *path, char *const argv[]);,它用于执行一个新的程序。参数path指定要执行的程序路径,参数argv是一个指向字符指针数组的指针,用于传递给新程序的参数。

(1)代码

#include <stdio.h>  
#include <unistd.h>  
  
int main() {  
    char *argv[] = {"ls", "-l", NULL};  
    exec("ls", argv);  
    return 0;  
}

  exec()函数执行了ls命令,并传递了一个参数-l

四.ps kill 命令       

        ps 命令 ps 命令可以列出系统中当前运行的那些进程。
                        命令格式:ps [参数]
                        命令功能:用来显示当前进程的状态
                        常用参数: aux
        kill 命令 kill 命令用来杀死进程
                        举例:kill -9(SIGKILL) PID
        进程的状态
                        D: 无法中断的休眠状态 (通常 IO 的进程 )
                        R: 正在执行中
                        S: 静止状态
                        T: 暂停执行
                        Z: 不存在但暂时无法消除
                        W: 没有足够的记忆体分页可分配
                        <: 高优先序的行程
                        N: 低优先序的行程
                        L: 有记忆体分页分配并锁在记忆体内 (实时系统或捱 A I/O)
                        如下所示,使用命令“ ps aux | grep a.out ”查找到 ./a.out 的进程号为 3179 ,然后输入“ kill -9 3179 ”结 束此进程,

        完成后再次输入查找命令“ps aux | grep a.out”,没有发现 3179 号进程。 

 

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

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

相关文章

VSCode配置MingW编译调试环境

1.MingW简介 MinGW&#xff0c;即 Minimalist GNU For Windows。它是一些头文件和端口库的集合&#xff0c;该集合允许人们在没有第三方动态链接库的情况下使用 GCC&#xff08;GNU Compiler C&#xff09;产生 Windows32 程序。 实际上 MinGW 并不是一个 C/C 编译器&#xf…

92 [递归实现指数型枚举](https://www.acwing.com/problem/content/94/)

从 1∼n1∼&#xfffd; 这 n&#xfffd; 个整数中随机选取任意多个&#xff0c;输出所有可能的选择方案。 输入格式 输入一个整数 n&#xfffd;。 输出格式 每行输出一种方案。 同一行内的数必须升序排列&#xff0c;相邻两个数用恰好 11 个空格隔开。 对于没有选任何…

Spring6(二):IoC容器

文章目录 3. 容器&#xff1a;IoC3.1 IoC容器3.1.1 控制反转&#xff08;IoC&#xff09;3.1.2 依赖注入3.1.3 IoC容器在Spring的实现 3.2 基于XML管理Bean3.2.1 搭建子模块spring6-ioc-xml3.2.2 获取bean方式一&#xff1a;根据id获取方式二&#xff1a;根据类型获取方式三&am…

大语言模型|人工智能领域中备受关注的技术

个人主页&#xff1a;【&#x1f60a;个人主页】 系列专栏&#xff1a;【❤️其他领域】 文章目录 前言关于大语言模型大语言模型是什么&#xff1f;大语言模型有什么用?文案写作知识库回答文本分类代码生成 AWS 如何通过 LLM 提供帮助&#xff1f;Amazon BedrockAmazon SageM…

anaconda中安装pytorch和TensorFlow环境并在不同环境中安装kernel

❤️觉得内容不错的话&#xff0c;欢迎点赞收藏加关注&#x1f60a;&#x1f60a;&#x1f60a;&#xff0c;后续会继续输入更多优质内容❤️ &#x1f449;有问题欢迎大家加关注私戳或者评论&#xff08;包括但不限于NLP算法相关&#xff0c;linux学习相关&#xff0c;读研读博…

unity使用vs进行c#代码提示,查看F12unity元代码

unity关联vs 在vs中让cs.meta显示&#xff0c;鼠标右键&#xff0c;包含在内 提示GameObject类了 感谢下面这位的提示https://zhuanlan.zhihu.com/p/551119106

概率论和数理统计(四)方差分析与回归分析

前言 实际场景中,也需要研究两个变量的关系.检验也可能出现两个以上的总体. 方差分析 假设检验中&#xff0c;若需检验 H 0 : μ 1 μ 2 &#xff0c; H 1 : μ 1 ̸ μ 2 H_0:μ_1μ_2&#xff0c;H_1:μ_1 \notμ_2 H0​:μ1​μ2​&#xff0c;H1​:μ1​μ2​&#x…

MySQL(18):MySQL8.0的其它新特性

MySQL从5.7版本直接跳跃发布了8.0版本。 MySQL8.0 新增特征 1.更简便的NoSQL支持。 NoSQL泛指非关系型数据库和数据存储。随着互联网平台的规模飞速发展&#xff0c;传统的关系型数据库已经越来越不能满足需求。从5.6版本开始&#xff0c;MySQL就开始支持简单的NoSQL存储功能…

【计算机组成原理】绘制出纯整数(1字节)和纯小数的数轴

绘制出用原码、反码、补码表示纯整数(字节) 的数轴&#xff1a; 对于一字节的大小&#xff0c;原码和反码都只能表示255个数字&#xff0c;因为0占了2个符号数。而补码能表示256个数字&#xff0c;因为0和-0的补码是一样的。所以多出来一个符号数1000 0000能够表示-128所以&…

AMEYA360分析:炬玄智能高精准度、低相噪TCXO时钟补偿芯片

炬玄智能一款TCXO芯片JXT171和生产补偿系统成功通过应用测试&#xff0c;指标达到国际先进水平&#xff0c;实现该产品品类国内首家全国产化突破&#xff0c;为重点行业终端客户供应链保障续上关键一环。 1、典型应用 随着移动通信技术在我国得到广泛应用&#xff0c;蓬勃发展的…

程序员的护城河:技术深度、创新精神与软实力的完美结合

文章目录 1. 技术深度&#xff1a;建立坚实的技术基石2. 创新精神&#xff1a;应对变革的利器3. 软实力&#xff1a;沟通协作构筑团队防线4. 结合三者构筑完美护城河 &#x1f389;程序员的护城河&#xff1a;技术深度、创新精神与软实力的完美结合 ☆* o(≧▽≦)o *☆嗨~我是I…

东南亚电商平台,如何有效防范欺诈商户入驻?

目录 柬埔寨居民频遭电商欺诈 平台如何防范欺诈商家入驻 柬埔寨电信监管机构最新公布的数据显示&#xff0c;截至2022年1月&#xff0c;柬埔寨移动电话用户数量已达到19,458,849人&#xff0c;互联网用户数量达到1,7591,396人。这一数据表明&#xff0c;柬埔寨的数字化趋势日…

在webstorm中配置sass编译环境

1.下载ruby 下载地址&#xff1a;ruby下载 2.安装ruby 下载之后&#xff0c;有一个exe安装包 双击exe文件 &#xff0c;并选择自己的安装位置&#xff08;这个位置一定要记得&#xff0c;需要在webstorm中使用&#xff09;。其他的步骤默认安装即可。 3.安装sass ruby安装成功后…

【华为HCIP | 华为数通工程师】IPV4与IPV6 高频题(2)

个人名片&#xff1a; &#x1f43c;作者简介&#xff1a;一名大三在校生&#xff0c;喜欢AI编程&#x1f38b; &#x1f43b;‍❄️个人主页&#x1f947;&#xff1a;落798. &#x1f43c;个人WeChat&#xff1a;hmmwx53 &#x1f54a;️系列专栏&#xff1a;&#x1f5bc;️…

十九章总结

一.Java绘图类 1.Graphics类 Graphics类是所有图形上下文的抽象基类&#xff0c;它允许应用程序在组件以及闭屏图像上进行绘制。Graphics类封装了Java支持的基本绘图操作所需的状态信息&#xff0c;主要包括颜色、字体、画笔、文本、图像等。 2.Graphics2D类 Graphics2…

【软考篇】中级软件设计师 第四部分(一)

中级软件设计师 第四部分&#xff08;一&#xff09; 二十九. 程序设计语言概述29.1 解释、编译29.3 编译程序29.4 后缀式29.5 文法定义29.6 正规式29.7 有限自动机29.8 语法分析方法 三十. 法律法规30.1 作品所属权30.2 商标有效期30.3 职务作品所属权30.4 单位与委托30.5 商标…

Python 获取北上广深历史天气数据并做数据可视化

嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 知识点: 动态数据抓包 requests发送请求 结构化非结构化数据解析 开发环境: python 3.8 运行代码 pycharm 2022.3.2 辅助敲代码 专业版 requests 发送请求 pip install requests parsel 解析数据 pip install parsel …

jbase实现通用码表

没有通用码表的体系是不完美的&#xff0c;当年我用C#能实现的通用码表&#xff0c;现在在java一样的实现了&#xff0c;通用码表对提高开发效率和降低开发成本的作用巨大&#xff0c;开发可以专注写业务&#xff0c;而不比被太多的维护界面束缚。进而体现在产品竞争力上面&…

Radiology 谈人工智能在放射学领域的10个预测方向 [文献阅读]

人工智能(AI)和信息学正在改变放射学。十年前&#xff0c;没有哪个专家会预测到今天放射人工智能行业的蓬勃发展&#xff0c;100多家人工智能公司和近400种放射人工智能算法得到了美国食品和药物管理局(FDA)的批准。 不到一年前&#xff0c;即使是最精明的预言家也不会相信这些…

Figma插件合集大放送,效果嘎嘎棒!

近日&#xff0c;Figma被Adobe收购的消息在设计领域引起了极大的轰动。作为海外知名的设计工具&#xff0c;Figma对设计圈的影响不容小觑。Figma插件是设计师选择Figma的重要原因。然而&#xff0c;设计软件是一个快速更新和迭代的行业。在关注海外设计软件的同时&#xff0c;也…