<commit_before><commit_msg>add IPC<commit_after>---
layout: post
title: 进程间通信方式
categories: C
tags: C IPC
---

* content
{:toc}

Unix/Linux进程间通信(IPC)方式有不少，死记硬背这一套当然是行不通的，学习做事都需要总结。对于当前经验阅历不是很充足的人来说(比如我自己)，发现别人的优点，站在别人的肩膀上，消化吸收是个不错的学习方法。

学习《Unix网络编程 卷2: 进程间通信》时，书中涉及到不少术语和相关标准，应当对其有个了解，而不致于被各个IPC通信方式绕晕。

## 背景

以下小结对IPC做了一个介绍，主要为System V IPC -> Posix IPC的过程。

参考：[Linux进程通信的源头](http://blog.csdn.net/u013074465/article/details/46051189)

## System V IPC

以下是找到的网络上对System V IPC(XSI IPC)一篇比较好的总结文章，文章描述和风格都很不错。

System V（“系统五”）系统上发明了三种IPC机制（消息队列、信号量和共享内存），通常称为System V IPC。又因为后来被收录到Unix的XSI标准之中，故又称为XSI IPC。所以当你看到`System V IPC` 和 `XSI IPC`的时候实际上指的是同一种东西。

参考：[System V三种IPC编程巧学巧记](http://blog.csdn.net/guodongxiaren/article/details/43876207)

## Posix IPC

也包含消息队列、信号量、共享内存，使用流程差不多，API有所不同。

* Posix 消息队列
* Posix 信号量
* Posxi 共享内存

{'fraction_non_alphanumeric': 0.12665862484921592, 'fraction_numerical': 0.031363088057901084, 'mean_word_length': 7.383838383838384, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 4, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2222873', 'n_tokens_mistral': 605, 'n_tokens_neox': 664, 'n_words': 52}