Linux系统进程与进程间通信

      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 号进程。 

 

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

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

相关文章

浅谈安科瑞无线测温产品在巴西某工厂的应用

摘 要&#xff1a;高压开关设备是变电站和配电站中保证电力系统安全运行的重要设备之一,因此,开关柜的稳定运行对于整个电力系统有非常重要的意义。设备老化、长期高负荷运行都可能使设备局部温度过高而发生火灾&#xff0c;因此,对变电站内的敏感设备进行温度检测变得尤为重要…

Java实现简单的俄罗斯方块游戏

一、创建新项目 1.首先新建一个项目&#xff0c;并命名为俄罗斯方块。 2.其次新建一个类&#xff0c;命名为Main&#xff0c;或其他的。 二、运行代码 代码如下&#xff1a; package 俄罗斯方块;import java.awt.BorderLayout; import java.awt.Color; import java.awt.Gr…

2024有哪些免费的mac苹果电脑内存清理工具?

在我们日常使用苹果电脑的过程中&#xff0c;随着时间的推移&#xff0c;可能会发现设备的速度变慢了&#xff0c;甚至出现卡顿的现象。其中一个常见的原因就是程序占用内存过多&#xff0c;导致系统无法高效地运行。那么&#xff0c;苹果电脑内存怎么清理呢&#xff1f;本文将…

【机器学习8】采样

1 均匀分布随机数 均匀分布是指整个样本空间中的每一个样本点对应的概率&#xff08;密度&#xff09; 都是相等的。 根据样本空间是否连续&#xff0c; 又分为离散均匀分布和连续均匀分布。编程实现均匀分布随机数生成器一般可采用线性同余法&#xff08;Linear Congruential…

大数据-之LibrA数据库系统告警处理(ALM-12046 网络写包丢包率超过阈值)

告警解释 系统每30秒周期性检测网络写包丢包率&#xff0c;并把实际丢包率和阈值&#xff08;系统默认阈值0.5%&#xff09;进行比较&#xff0c;当检测到网络写包丢包率连续多次&#xff08;默认值为5&#xff09;超过阈值时产生该告警。 用户可通过“系统设置 > 阈值配置…

全功能知识付费变现小程序系统源码 自带流量主 轻松帮你赚钱 带完整搭建教程

大家好啊&#xff0c;今天罗峰要来给大家分享一款全功能知识付费变现小程序源码系统 。近年来互联网技术的快速发展&#xff0c;以及人们对知识付费的需求不断增长。全功能知识付费变现小程序系统源码的出现为大家提供一个全面、高效、安全的解决方案&#xff0c;帮助用户实现知…

阿里云的99元服务器和腾讯云的88元云服务器选择哪个?怎么选?

近日&#xff0c;阿里云宣布在2023年双十一优惠活动中推出了一系列降价措施&#xff0c;使得同配置的云服务器比腾讯云更具竞争力。这一消息不仅在云计算领域引起了轰动&#xff0c;更为广大互联网用户提供了更为实惠的选择。 阿里云推出99元一年的服务器&#xff0c;续费价格…

Linux学习教程(第三章 Linux文件和目录管理)1

第三章 Linux文件和目录管理&#xff08;初识Linux命令&#xff09; 对初学者来说&#xff0c;管理 Linux 系统中的文件和目录&#xff0c;是学习 Linux 至关重要的一步。 为了方便管理文件和目录&#xff0c;Linux 系统将它们组织成一个以根目录 / 开始的倒置的树状结构。Li…

VueEcharts的使用简解以及常用网站

目录 一&#xff1a;前言 二&#xff1a;实现 1、安装echarts依赖 2、创建图表 1&#xff09;全局引入 2&#xff09;按需引入 三&#xff1a;结尾 一&#xff1a;前言 VueEcharts 是项目开发中可视化的一个重要知识部分。其涵盖了柱状图&#xff0c;饼状图&#xff0c;…

机器学习深度学习服务器推荐

大学生、研究生未免找不到还有的GPU服务器&#xff0c;这边博主推荐 https://featurize.cn?s3d13789cb8184f16bb6133b20c353207 方便&#xff0c;便宜&#xff0c;不会自动删除上传项目文件&#xff0c;支持VScode、pycharm、SSH链接&#xff0c;上传文件速度快。强烈推荐&am…

B031-网络编程 Socket Http TomCat

目录 计算机网络网络编程相关术语IP地址ip的概念InerAdress的了解与测试 端口URLTCP、UDP和7层架构TCPUDPTCP与UDP的区别和联系TCP的3次握手七层架构 Socket编程服务端代码客户端代码 http协议概念Http报文 Tomcat模拟 计算机网络 见文档 网络编程相关术语 见文档 IP地址 …

【Proteus仿真】【STM32单片机】锂电池管理系统

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真STM32单片机控制器&#xff0c;使用LCD1602显示模块、DS18B20温度传感器、PCF8691 ADC模块、按键、LED蜂鸣器模块等。 主要功能&#xff1a; 系统运行后&#xff0c;LCD1602显示温…

2核2G3M带宽云服务器99元(续费同价),阿里云老用户可买!

在阿里云的双11云服务器活动中&#xff0c;用户对轻量服务器2核2G3M带宽和经济型e实例2核2G配置3M带宽特别关注。除了这两款产品&#xff0c;阿里云还提供了其他性价比很高的云服务器配置&#xff0c;让用户有更多的选择。 经济型e实例2核2G3M配置99元一年是适用于个人和普通企…

《向量数据库指南》——TruLens 用于语言模型应用跟踪和评估

TruLens 用于语言模型应用跟踪和评估 TruLens 是一个用于评估语言模型应用(如 RAG)的性能的开源库。通过 TruLens,我们还可以利用语言模型本身来评估输出、检索质量等。 构建语言模型应用时,多数人最关心的问题是 AI 幻觉(hallucination)。RAG 通过为语言模型提供检索上下文…

ython requests 库中 POST 方法的使用及文档改进

在使用Python库requests的过程中&#xff0c;发起者r1chardj0n3s遇到了一个关于POST方法的问题。他表示&#xff0c;他花费了一些时间才弄清楚requests.post函数的使用方法。然而&#xff0c;在requests的官方文档中&#xff0c;关于POST方法的描述只出现在API文档中&#xff0…

基于springboot实现医患档案管理系统项目【项目源码】计算机毕业设计

基于springboot实现医患档案管理系统演示 Java语言简介 Java是由SUN公司推出&#xff0c;该公司于2010年被oracle公司收购。Java本是印度尼西亚的一个叫做爪洼岛的英文名称&#xff0c;也因此得来java是一杯正冒着热气咖啡的标识。Java语言在移动互联网的大背景下具备了显著的…

【博客系统】 一

该博客系统基于servlet和mysql数据库 , 并且通过xshell终端工具部署至云服务器. 实现的功能包括: 1.博客列表页 2.博客详情页 3.登陆页面 4.强制登陆检查 5.获取用户信息 6.退出登陆 7.发布博客 一.系统展示 登陆页面 博客列表页 博客详情页 博客编辑页 下面就开始编写代码了.…

【Linux】Linux进程间通信(一)

​ ​&#x1f4dd;个人主页&#xff1a;Sherry的成长之路 &#x1f3e0;学习社区&#xff1a;Sherry的成长之路&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;Linux &#x1f3af;长路漫漫浩浩&#xff0c;万事皆有期待 上一篇博客&#xff1a;【Linux】…

如何选择适合企业的数字化看板系统

数字化看板是一种数字化管理工具&#xff0c;它具有实时数据展示、任务分配与优先级管理、问题追踪与解决、供应链管理与协同以及数据分析与预测等功能。这些功能可以帮助企业提高生产效率、降低成本、优化资源配置并实现生产过程的透明化。 具体来说&#xff0c;数字化看板可以…

Navicat 使用

安装包请私信本人 软件安装 需要注意以下不要先运行navicat软件,先运行 在工具的第一个选项(1.Patch)里选择Backup&#xff0c;然后点击&#xff0c;Patch按钮&#xff0c;选择Navicat的安装位置中的navicat.exe文件 如果显示这样表示成功了 在这选择语言简体中文 点击Gener…