Linux 进程间通信

进程间通信

一 进程间通信 -- 管道

  • mkfifo test 创建管道文件
  • 匿名管道和命名管道:
    • 匿名管道:匿名管道主要利用了,创建子进程的时候会把父进程的文件描述符表拷贝一份这个特征,通过这个特征,父子进程就看到了一个公共的资源—管道,并同时拥有对该管道腹泻的权利,那么一方读,一方写,就可以完成进程之间的通信了。
    • 命名管道:既然管道也是一个文件,那么肯定有大小上限,这也是其一个缺点,大小有限的

二 消息队列

  • 管道是一个文件,而消息队列是一个数据结构
    ipcs -q #查看消息队列状态
    ipcrm -q 21323 #销毁

三 信号量

  • 信号量用于进程间的同步和互斥

    • 同步:处理竞争,安排进程执行的顺序
    • 互斥:互斥访问不可共享资源
    • 竞争:并发进程竞争使用同一个资源时
  • 信号量的创建:

  • 信号量的初始化

  • 信号量操作:

    • P操作
    • V操作
  • 信号量的删除

四 共享内存

  • 创建共享存储区:
    ipcs -m #查看当前的共享存储区
  • 共享存储区的链接
  • 共享存储区的断开
  • 删除共享存储区

五 信号

  • 信号是怎么产生的:

    • 硬件产生的
    • 进程发送的
    • 异常
    • kill -l #查看所有的信号
  • 信号处理的方式:

    • 忽略
    • 默认处理
    • 自定义处理
  • 相关函数解析:

  • 阻塞信号

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容