【IPC通信】Posix消息队列使用非阻塞mq_receive的信号通知
某个空的消息队列被放置一个消息时通过产生一个信号通知进程,进程取走消息。 #include <stdio.h> #include <stdlib.h> #include <mqueue.h> #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> #include <fcntl.h> #include <errno.h> #include <signal.h> volatile sig_atomic_t mqflag; // 被信息处理函数设置为非0值 void sig_usr1(int); int main(int argc, char *argv[]) { mqd_t mqd; char *ptr; struct mq_attr attr; struct sigevent sigev; sigset_t zeromask, newmask, oldmask; // 信号集 unsigned int prio; size_t n; int rc; if(argc != 2) { printf("Usage: mqnotifysig3 <name>\n"); exit(1); } /*只读模式打开消息队列,同时指定非阻塞标志*/ mqd = mq_open(argv[1], O_RDONLY); if(mqd