Linux消息队列(简单的信号通知)

来源:互联网 发布:app软件广告语 编辑:程序博客网 时间:2024/06/01 14:46
#include <unistd.h>#include <stdio.h>#include <mqueue.h>#include <stdlib.h>#include <signal.h>mqd_t   mqd;void    *buff;struct  mq_attr attr;struct  sigevent    sigev;static  void sig_user1(int);int main(int argc, char** argv){    if(argc != 2)    {        printf("usage: mqnotifysig1 <name>");    }    mqd = mq_open(argv[1], O_RDONLY);    mq_getattr(mqd, &attr);    buff = malloc(attr.mq_msgsize);    signal(SIGUSR1, sig_user1);    sigev.sigev_notify = SIGEV_SIGNAL;    sigev.sigev_signo = SIGUSR1;    mq_notify(mqd, &sigev);    for(;;)    {        pause();    }    exit(0);}static void sig_user1(int signo){    ssize_t n;    mq_notify(mqd, &sigev);    n = mq_receive(mqd, buff, attr.mq_msgsize, NULL);    printf("SIGUSR1 received, read %ld bytes\n", (long) n);    return;}

原创粉丝点击