首页 > 解决方案 > 等待信号 MEX 功能

问题描述

我正在尝试为 MATLAB 创建一个 MEX 函数,它只会等待 UNIX 信号。

这是我写的代码:

void sigHandler(void)
{
    sigset_t set;
    int sig;

    sigemptyset(&set);
    if(sigaddset(&set, SIGUSR2) == -1)
        perror("sigaddset error");
    sigprocmask(SIG_BLOCK, &set, NULL);

    if(sigwait(&set, &sig) == -1)
        perror("sigwait failed\n");

    return;
}

/* The gateway function */
void mexFunction(int nlhs, mxArray *plhs[],
                 int nrhs, const mxArray *prhs[])
{
    sigHandler();
    return;
}

当我执行此函数时,它正在工作,但是在将 SIGUSR2 发送到 MATLAB 进程后,MATLAB 崩溃了。

知道为什么吗?

标签: cmatlabunixmex

解决方案


推荐阅读