- 管道 pipe,这种方式类似于瀑布模型,必须等上一个步骤有了结果才可以执行下一个步骤
匿名管道:命令行中使用的 |
ps -ef | grep 关键字 | awk '{print $2}' | xargs kill -9
命名管道:使用mkfifo创建的如下,创建并输入信息给管道:mkfifo hello #### 这里会阻塞,直到有人接收##### echo "hello world" > hello ######输出####### cat < hello
-
消息队列,类似于邮件沟通
- 我们需要创建一个消息队列,使用 msgget 函数
信号量,消息队列,共享内存都属于 System V IPC 的通讯机制里面。System V 的统一命令, ipcmk 创建 ;ipcs 查看;ipcrm 删除;他们都需要一个全局唯一的ID 一般通过 ftok 将 文件的inode转化为一个id
- 发送消息 msgsnd 函数
- 接收消息 msgrcv 函数
-
共享内存
- 创建一个共享内存,调用 shmget
- 将这个内存加载到自己的虚拟地址空间的某个位置,通过 shmat 函数
- shmctl,对共享内存进行操作,比如将 cmd 设置为 IPC_RMID,从而删除这个共享内存对象
- shmdt 解除绑定
-
信号量:一般用于协调共享资源,最主要用于共享内存共同合作
- P 操作,我们称为申请资源操作。
- V 操作,我们称为归还资源操作。
- 始化信号量的总的资源数量。通过 semctl 函数
- P操作和V操作使用emop 函数
- 信号:异常情况下的工作模式,类似于故障处理
信号可以在任何时候发送给某一进程,进程需要为这个信号配置信号处理函数。当某个信号发生的时候,就默认执行这个函数就可以了。这就相当于咱们运维一个系统应急手册,当遇到什么情况,做什么事情,都事先准备好,出了事情照着做就可以了。
网友评论