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

以上是关于Linux进程间通信实例(pipeshared memorysocket)的主要内容,如果未能解决你的问题,请参考以下文章

linux 进程间通信 dbus-glib实例详解四(下) C库 dbus-glib 使用(附代码)

linux 进程间通信 dbus-glib实例详解二(上) 消息和消息总线(附代码)

QT程序与 Linux应用程序运 进程间数据通信实例

linux 进程间通信 dbus-glib实例详解二(下) 消息和消息总线(ListActivatableNames和服务器的自动启动)(附代码)

LInux进程间通信之消息队列编程实例

Linux进程间通信