
Linux: 多进程编程
北雨南萍
长期专注于实时音视频通信技术、音视频处理技术,包括基于webrtc的音视频通信解决方案,基于ffmpeg的媒体处理解决方案。
展开
-
多进程编程:Perl与C进程间的消息队列通信
前言:perl和C语言都提供了消息队列的机制,而且这两种语言中的消息队列可以相互兼容.当涉及到系统架构时,可以用C语言实现核心计算模块,用Perl实现业务逻辑层,而这两层间可以通过消息队列来实现不同语言的进程间的通信.本文先用两个示例程序讲解Perl对消息队列的实现。再一个示例程序讲解Perl与C之间使用消息队列进行进程间的通信.一. 使用IPC::SysV和I原创 2013-02-18 15:53:04 · 1668 阅读 · 0 评论 -
Perl 使用管道实现进程间的通信
fork()函数: 作用:进程复制函数。 用法:$pid=fork(); 讲解: 无参数;当本进程为父进程时返回值为子进程的PID值,当进程为子进程时返回值为0。 实例: #!usr/bin/perl -w $pid=fork(); #复制进程,并把返回值附入$pid die "Error:$!\n转载 2013-10-03 23:11:38 · 3477 阅读 · 0 评论 -
linux进程间的通信(C):信号
一、信号信号是UNIX和Linux系统响应某些条件而产生的一个事件。接收到该信号的进程会相应地采取一些行动。 在软件层次上, 信号是对中断机制的一种模拟;在实现原理上, 一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。信号是异步的,一个进程不必通过任何操作来等待信号的到达, 因为,事实上,进程也不知道信号具体什么时候会到达。信号是进程间通信机原创 2013-02-24 22:47:03 · 1115 阅读 · 0 评论 -
linux进程间的通信(C): 匿名管道
1. Linux进程间的通信简介Linux下的进程通信手段基本上是从Unix平台上的进程通信手段继承而来的。AT&T的贝尔实验室和BSD(加州大学伯克利分校的伯克利软件发布中心)对Unix发展做出重大贡献,但是他们在进程间通信方面的侧重点有所不同。前者对Unix早期的进程间通信手段进行了系统的改进和扩充,形成了“system V IPC”,但是通信进程局限在单个原创 2013-02-25 06:13:49 · 1419 阅读 · 0 评论 -
linux进程间的通信(C): 命名管道
1. 命名管道: FIFO命名管道是一种特殊类型的文件,它在文件系统中以文件名的形式存在,但它的行为却和匿名管道类似;2. FIFO文件与普通文件之间的区别:A. 程序不能以O_RDWR模式打开FIFO文件进行读写操作, 这样做的后果并未明确定义, 如果一个管道以读/写方式打开, 进程就会从这个管道读回它自己的输出. 如果需要在程序之原创 2013-02-25 06:12:37 · 1284 阅读 · 0 评论 -
linux进程间的通信(C): 信号量
一、信号量简介信号量: 用于管理对资源的访问。荷兰计算机科学家Edsger Dijkstra提出的信号量概念是在并发编程领域迈出的重要一步。信号量是一个特殊的变量,它只取正数值,并且程序对其访问都是原子操作。二、信号量的定义它是一个特殊变量,只允许对它进行等待(wait)和发送信号(signal)这两种操作, P(信号量变量): 用于等待。原创 2013-02-25 06:11:52 · 1367 阅读 · 0 评论 -
linux进程间的通信(C): 消息队列
一、消息队列(message queue)消息队列也是System V IPC机制之一。消息队列与命名管道类似,但少了打开和关闭管道方面的复杂性。但使用消息队列并未解决我们在使用命名管道时遇到的一些问题,如管道满时的阻塞问题。消息队列提供了一种在两个不相关进程间传递数据的简单有效的方法。与命名管道相比,消息队列的优势在于,它独立于发送和接收进程而存在,这原创 2013-02-25 06:10:14 · 885 阅读 · 0 评论 -
linux进程间的通信(C): 共享内存
一、共享内存介绍共享内存是三个IPC(Inter-Process Communication)机制中的一个。它允许两个不相关的进程访问同一个逻辑内存。共享内存是在两个正在进行的进程之间传递数据的一种非常有效的方式。大多数的共享内存的实现,都把由不同进程之间共享的内存安排为同一段物理内存。共享内存是由IPC为进程创建一个特殊的地址范围,原创 2013-02-25 06:09:25 · 967 阅读 · 0 评论 -
linux进程间的通信(C): 使用信号量进行同步的共享内存机制
一、简介共享内存为在多个进程之间共享和传递数据提供了一种有效的方式。但它本身并未提供同步机制。在实际编程中,可以使用 信号量, 传递消息(使用管道或IPC消息), 生成信号, 条件变量,等方法来提供读写之间的有效的同步机制。本例程序使用信号量进行同步,主要是因为它方便,使用广泛,且独立于进程。本例程序实现了,生产者进程:原创 2013-02-25 06:07:13 · 1682 阅读 · 0 评论 -
linux进程间的通信(Perl):FIFO应用示例
很简单的一个FIFO应用示例,两个进程间,使用FIFO进行通信.闲言少述,直接上文:my $cmd_ff = "./ffmpeg -i ....";my $uuid = `uuidgen`; // 生成不重名FIFO的名称chomp $uuid;system("mkfifo $uuid"); // 创建FIFO原创 2013-02-25 06:06:04 · 1209 阅读 · 0 评论 -
多进程编程: Perl与C进程间的消息队列通信
前言:perl和C语言都提供了消息队列的机制,而且这两种语言中的消息队列可以相互兼容.当涉及到系统架构时,可以用C语言实现核心计算模块,用Perl实现业务逻辑层,而这两层间可以通过消息队列来实现不同语言的进程间的通信.本文先用两个示例程序讲解Perl对消息队列的实现。再一个示例程序讲解Perl与C之间使用消息队列进行进程间的通信.一. 使用IPC::SysV原创 2013-02-25 06:05:02 · 1495 阅读 · 0 评论 -
msgsnd/msgrcv系统调用详解
功能描述在消息队列上进行收发消息。为了发送消息,调用进程对消息队列进行写入时必须有写权能。接收消息时必须有读权能。用法:#include #include #include int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg);ssize_t msgrcv(int msqid, v转载 2013-03-04 18:03:38 · 2517 阅读 · 0 评论 -
linux 的 System V IPC状态查看与设置
一、简介Unix系统V版本有3种进程间通信机制:分别上消息队列,信号量和共享内存。这些IPC机制使用共同的授权方法。只有通过系统调用将标志符传递给核心之后,进程才能存取这些资源。这种系统IPC对象使用的控制方法和文件系统非常类似。使用对象的引用标志符作为资源表中的索引。系统中的所有IPC 都可以在内核中找到访问入口。IPC标识符:每一个IPC目标都有一个唯一的IPC原创 2013-12-10 11:42:10 · 1702 阅读 · 0 评论