进程间的通信方式

一、本机间进程通信

1、管道通信

       如果读端关闭,写端继续向管道内写数据将会导致管道破裂,内核将会发送信号SIGPIPE到进程中,该信号的默认处理方式为结束进程;

       如果写端关闭,读端继续从管道中读取数据将会读不到任何数据;

       管道文件的大小固定为64K,如果写入数据超过64K并且没有对数据进行读操作,那后续写入动作将会被阻塞。

       半双工通信,可读可写,不可以同时读写。

1.1、无名管道(用于亲缘间进程通信)

       有固定的读端和写端;

       不会在磁盘系统中存在,是临时文件。

       函数:pipe

1.2、有名管道

       管道可用于读写;

       在磁盘系统中存在。

       函数:mkfifo

2、信号通信

       异步通信方式,在软件层次上模拟中断的产生。

       对信号的处理方式:

               1、默认处理方式

               2、忽略信号

               3、捕获信号

       常用信号:

               1、SIGINT(Ctrl+c):该信号的默认处理方式为结束进程

               2、SIGKILL:该信号的默认处理方式为结束进程

               3、SIGCHLD:该信号的默认处理方式为忽略,子进程状态改变

               4、SIGCONT:该信号的默认处理方式为将停止态的进程重新恢复到运行态

               5、SIGSTOP:该信号的默认处理方式为将进程直接进入停止态

               6、SIGTSTP(Ctrl+z):该信号的默认处理方式为将进程进入停止态

       其中SIGKILL、SIGSTOP不可以被忽略、不可以被阻塞、不可以被捕获,只能采用默认处理方式。

       函数:Kill、raise、alarm、pause、signal

IPC对象机制

3、共享内存

      多个进程共享同一片内存空间,不需要进行数据的拷贝,效率最高;但存在资源竞争问题。

      函数:shmget(搭配ftok)、shmat、shmdt、shmctl

4、消息队列

      先进先出,保证信息的有序性。

      函数:msgget(搭配ftok)、msgsnd、msgrcv、msgctl

5、信号灯集

      信号灯也叫信号量,是不同进程间或一个给定进程内部不同线程间同步的机制。

      信号灯集为信号量的集合,实现同步、互斥机制,配合共享内存使用,解决资源竞争问题。

      函数:semget、semctl、semop

二、跨主机通信

6、套接字通信

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值