Linux进程间通信实例(pipeshared memorysocket)
Posted 白马负金羁
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux进程间通信实例(pipeshared memorysocket)相关的知识,希望对你有一定的参考价值。
在Linux下的多个进程间的通信机制叫做IPC(Inter-Process Communication),它是多个进程之间相互沟通的一种方法。Linux中提供有多种进程间通信的方法:
- 管道(Pipes)
- FIFO(或称named pipes)
- 消息队列
- Unix-domain Socket
- 共享内存(Shared memory)
本文基于实例来演示其中的若干种通信机制。
1. 管道
这可能是最常用的一种方式。它仅可用于有亲缘关系的进程间通信,即parent process和child process之间。事实上,在shell中的使用命令行时,符号“|”就是一个Pipe。例如:
$ cat tmp_file | grep \'OS\'
这表示你创建了一个管道,将cat的stdout与grep的stdin连接了起来。
调用函数pipe()生成两个文件描述符号,fd[0]和fd[1],它们分别对应read端和write端。例如下面的代码中,我们创建了一个父进程,一个子进程,并在二者之间建立管道(管道是Kernel空间中的一块内存区域)。子进程向管道中写入一个字符串,父进程则从管道中读出该字符串,并将其输出到屏幕上。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/wait.h>
int main(int argc, const
以上是关于Linux进程间通信实例(pipeshared memorysocket)的主要内容,如果未能解决你的问题,请参考以下文章
linux 进程间通信 dbus-glib实例详解四(下) C库 dbus-glib 使用(附代码)
linux 进程间通信 dbus-glib实例详解二(上) 消息和消息总线(附代码)
linux 进程间通信 dbus-glib实例详解二(下) 消息和消息总线(ListActivatableNames和服务器的自动启动)(附代码)