Nginx源码分析—进程间通信机制
从nginx的进程模型可以知道,master进程和worker进程需要通信,nginx中通信的方式有套接字、共享内存、信号。对于master进程,从外部接受信号,master进程主要就是监控、接受外部信号,将有必要的信号传递给worker进程,master进程大部分时间都是阻塞在sigsuspend()函数调用上。Worker进程屏蔽了所有的外部信号,那么Ma...
分类:
系统相关 时间:
2014-11-20 23:46:04
阅读次数:
329
sigsuspend是一个原子操作,为了防止信号丢失而存在的,具体含义看下函数原型。int sigsuspend(const sigset_t *mask);先忽略参数,sigsuspend完成的操作是阻塞进程的运行,直到有信号的产生。这样来看与另一个函数的作用相同。pause()加上参数来理解,s...
分类:
其他好文 时间:
2014-07-07 15:48:34
阅读次数:
232
一个进程的信号屏蔽字规定了当前阻塞而不能递送给该进程的信号集。调用函数sigprocmask可以检测或更改其信号屏蔽字,或者在一个步骤中同时执行这两个操作。
#include
int sigprocmask( int how, const sigset_t *restrict set, sigset_t *restrict oset );
返回值:若成功则返回0,若出错则返回-1
首...
分类:
其他好文 时间:
2014-06-18 12:38:52
阅读次数:
225
int sigsuspend(const sigset_t *mask);//挂起进程直至信号发生
man手册的解释:
sigsuspend() temporarily replaces the signal mask of the calling process with the mask given by mask and then suspends the proces...
分类:
其他好文 时间:
2014-05-22 13:41:23
阅读次数:
329