Linux进程间通信(IPC)的几种方式总结

 更新时间:2023年09月07日 08:42:40   作者:fliter  
进程间通信是指至少两个进程或线程间传送数据或信号的一些技术或方法,每个进程都有自己的一部分独立的系统资源,彼此是隔离的,为了能使不同的进程互相访问资源并进行协调工作,才有了进程间通信,本文就给大家介绍几种Linux进程间通信的方式,需要的朋友可以参考下

概述:

进程间通信(IPC,Inter-Process Communication),指至少两个进程或线程间传送数据或信号的一些技术或方法。进程是计算机系统分配资源的最小单位(进程是分配资源最小的单位,而线程是调度的最小单位,线程共用进程资源)。每个进程都有自己的一部分独立的系统资源,彼此是隔离的。为了能使不同的进程互相访问资源并进行协调工作,才有了进程间通信。

主要方法:

管道:

分为两种,

软管道: 如 ps -ef | grep xxxx,

硬管道

消息队列:

内核创建一个消息队列,操作系统中的多个进程都可以操作这个消息队列.可以向其发送消息,也可从中接收消息.

共享内存:

每个进程都有一个虚拟内存地址和物理内存地址的映射,一般两个进程的映射的物理内存地址是不同的,共享内存即是将其映射的物理内存地址变成一样的.这样两个进程就可以访问相同的物理内存,也就可以实现进程之间的通信.

套接字:

非常常见,如通过3306端口访问某个远程mysql服务, 我访问mysql的这个进程,和远程的这个mysql服务的进程之间的通信,就是通过3306端口创建的TCP的套接字.

如果是访问本机的mysql服务,则不会走TCP套接字,而是走Linux底层的套接字

信号量:

类似一个计数器.控制多个进程对一个共享资源的访问.

信号:

一个进程可以向另一个进程发送一个信号.通过kill -l指令可以列出所有的信号

(64种死法...)

Linux中的信号 大多数作用是把一个进程杀死,于是叫kill了..

tail -f xxx文件时,是会一直是阻塞. 如何结束? 一般会按ctrl+c,

其实该命令就是当前的shell($$可以看到当前shell的pid),向tail -f进程发送了一个信号,该信号值是2,即SIGINT

kill -9 pid, 9号信号是SIGKILL.

如果不加,则默认15号信号SIGTERM(即Terminal)

9号信号即kill信号是不能被捕捉的,必须强制停止. 其他信号可以在程序中捕捉到.

ctrl+c : SIGINT

kill不带参数: SIGTERM

KILL -9: SIGKILL

到此这篇关于Linux进程间通信(IPC)的几种方式总结的文章就介绍到这了,更多相关Linux进程通信内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用vs2019进行Linux远程开发的方法步骤

    使用vs2019进行Linux远程开发的方法步骤

    这篇文章主要介绍了使用vs2019进行Linux远程开发的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • 浅谈Linux环境下gcc优化级别

    浅谈Linux环境下gcc优化级别

    这篇文章主要介绍了Linux环境下gcc优化级别,涉及gcc系列的相关内容,具有一定参考价值,需要的朋友可以了解下。
    2017-09-09
  • Linux中的日志插件详解

    Linux中的日志插件详解

    这篇文章主要介绍了Linux中的日志插件,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-03-03
  • centos7下如何安装ftp服务

    centos7下如何安装ftp服务

    这篇文章主要介绍了centos7下如何安装ftp服务问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • centos服务器下nginx图片防盗链设置方法

    centos服务器下nginx图片防盗链设置方法

    本篇文章主要介绍了centos服务器下nginx防盗链设置方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • linux查看端口是否开放的方法详解

    linux查看端口是否开放的方法详解

    在Linux中,端口是设备与外界通讯交流的出口,常用于指TCP/IP协议中的端口,其按照端口号可以分为三类,分别是:公认端口、注册端口、动态端口,那么Linux中如何查看开启了哪些端口?以下是常用命令介绍
    2024-03-03
  • 使用Linux系统函数递归遍历指定目录的功能实现

    使用Linux系统函数递归遍历指定目录的功能实现

    在 Linux 系统中,递归遍历指定目录是一个常见的需求,例如文件管理工具、备份工具或病毒扫描工具等,本文将详细介绍如何使用 Linux 系统函数实现递归遍历目录的功能,需要的朋友可以参考下
    2025-10-10
  • SpringBoot整合Activiti7的实现代码

    SpringBoot整合Activiti7的实现代码

    这篇文章主要介绍了SpringBoot整合Activiti7的实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • Linux Shell里面生成随机数的一些思路分析

    Linux Shell里面生成随机数的一些思路分析

    这篇文章主要介绍了Linux Shell里面生成随机数的一些思路分析,需要的朋友可以参考下
    2016-07-07
  • Linux tr命令的使用

    Linux tr命令的使用

    这篇文章主要介绍了Linux tr命令的使用,帮助大家更好的理解和学习Linux,感兴趣的朋友可以了解下
    2020-08-08

最新评论