【问题标题】:C: Need to pause a process until sigalrmC:需要暂停一个进程直到 sigalrm
【发布时间】:2014-08-30 14:39:43
【问题描述】:

这段代码有问题..

我需要等待(sigwait)一个进程,直到到达两个信号SIGUSR1/SIGUSR2(也许我可以使用sigalrm来捕捉信号?)

#include <signal.h>
#include <stdio.h>

int main()
{
    sigset_t set;
    int sig;

    sigemptyset(&set);
    sigaddset(&set, SIGUSR1);
    sigaddset(&set, SIGUSR2);
    sigprocmask(SIG_BLOCK, &set, NULL);
    sigwait(&set, &sig);
    printf("Got signal %d\n", sig);
    /*need to set Sigalrm?*/
    return 0;
}

【问题讨论】:

  • 您要等到收到 both 信号吗?还是两者之一?
  • 到达 sigusr1 或 sigusr2 并不重要,只是其中之一..谢谢!

标签: c linux process signals


【解决方案1】:

通过select() 管道的读取端。当你捕捉到信号时,写入管道。这将导致select() 返回并继续执行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-27
    • 1970-01-01
    • 2014-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-04
    • 1970-01-01
    相关资源
    最近更新 更多