在操作系统中,有些进程存在着相互制约的关系,这些制约关系来源于并行进程的相互合作和资源共享。为了使合作进程和资源共享进程能协调一致的向前推进,必须使他们保持联系,一边相互了解。进程相互间需要交换一定数量的信息,以便协调一致共同完成指定的任务. 这种机制就叫做进程间通信,或IPC.在linux 中支持UNIX SYSTEM V 的三种通信机制: 消息队列, 信号量和共享内存. 现就消息队列这种机制进行分析.
System V信号量:
System V信号量与System V其他两种通信机制(消息队列、共享内存)不同,其用来实现同步、互斥进程动作,通过semget函数创建一个信号集或打开一个信号量集,信号集又包括多个信号量,信号量的值要大于等于0,小于0,就会阻塞。
信号量pv操作:
p操作:操作当前信号量减去某个值
v操作:操作当前信号量加上某个值
一 . semget函数(创建信号量集):
int semget(key_t key, int nsems, int semflg)
1 . key