摘要:
信号(signal) 信号是在软件层次上对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。信号是异步的,一个进程不必通过任何操作来等待信号的到达,事实上,进程也不知道信号到底什么时候到达。 信号是进程间通信机制中唯一的异步通信机制,可以看作是异步通知,通知接收信号的进程有哪些事情发生了。信号机制经过POSIX实时扩展后,功能更加强大,除了基本通知功能外,还可以传递附加信息。 信号事件的发生有两个来源:硬件来源(比如我们按下了键盘或者其它硬件故障);软件来源,最常用发送信号的系统函数是kill, raise, alarm和setitimer以及si... 阅读全文
摘要:
一、 XSI IPC1. 介绍XSI IPC包括消息队列、信号量和共享内存,它们都用一个非负的标示符(identifier)加以引用。标识符是IPC对象的内部名,为了使进程间能够在同一个IPC上相连,就要有一个外部名。键(key)就是这个外部名,每个IPC对象都与一个键相关联。 几种使客户进程与服务进程关联的方法(1) 服务进程可以指定键IPC_PRIVATE创建一个新IPC结构,将返回的标识符存在某处(如:一个文件)以便客户进程读取。注意:使用IPC_PRIVATE只能是创建一个新IPC,且只有服务进程将标识符写到文件中后,客户进程才能获取到。(2) 在公用都文件中定义一个客户进程和服务进. 阅读全文
摘要:
一、 Linux进程间通信概述主要分为以下几种:管道(无名管道pipe和命名管道FIFO)、信号(signal)、消息队列、共享内存、信号量、套接字(socket)等。主要分为以下4个领域(1)消息传递(管道,FIFO,消息队列)(2)同步(互斥锁,条件变量,读写锁,信号量)(3)共享内存区(匿名共享内存区,有名共享内存区)(4)过程调用(Solaris门,Sun RPC)二、 无名管道PIPE普通Linux都允许重定向,而重定向就是使用的管道。管道是单向的,先进先出,固定大小,一个进程向管道里进行输入,另一个进程从管道里获取输出。一旦数据被读出,则从管道里面删除,其它进程无法再读到该数据。管 阅读全文