[common] IPC

前言:

IPC , 进程间通讯,是指进程间通过 ipc 组件进行通讯的方式。

基本/通用 IPC:

匿名管道 pipe

适用范围:仅限相互有关系的进程之间,比如父子进程

Demo:

#include 
#include 
 ...
 	int p[2];
 ...
 	if (pipe(p) == -1) exit(1);
 	switch( fork() )
 	{
 		case 0:						/* in child */
 			close( p[0] );
 			dup2( p[1], 1);
 			close P[1] );
 			exec( ... );
 			exit(1);
 		default:						/* in parent */
 			close( p[1] );
 			dup2( P[0], 0 );
 			close( p[0] );
 			break;
 	}
 	...

优缺点:优点是简单,缺点是要求进程间必须在代码层面有关联,依赖于fork函数。


命名管道 named pipe

消息队列 message queue (system V & posix)

信号量 Sempohore

信号 Signal

共享内存 shared memory

速度最快的 ipc 方式是 共享内存 (shared memory) ,需要信号量协助完成进程间同步访问共享内存区域,否则会导致竞争关系

参考:

Chapter 7 Interprocess Communication (System Interface Guide)

你可能感兴趣的:(#,Common/Linux,C/C++,linux)