[common] IPC
  tCdZJQtjUpyw 2023年11月02日 41 0


前言:

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

基本/通用 IPC:

匿名管道 pipe

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

Demo:

#include <stdio.h>
#include <unistd.h>
 ...
 	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)

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
tCdZJQtjUpyw