首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么是“接收到的信号15”

什么是“接收到的信号15”
EN

Stack Overflow用户
提问于 2013-05-24 04:48:23
回答 1查看 138.4K关注 0票数 36

在Gentoo Linux集群上运行的使用名为SUNDIALS/CVODE (数值节点解算器)的库的C、MPI程序可能会给我重复的Signal 15 received.

这段代码是由MPI、Sundials、Linux、C还是谁发布的?

请注意,我几乎是以下技术的初学者: C、MPI、SUNDIALS/CVODE和Linux。

我找不到任何与googling the message相关的东西。我甚至不知道从哪里开始寻找。(这是“任何事情都有帮助”的问题之一。)

(顺便说一句,为什么Chrome的字典不能识别“googling”这个词?)

EN

回答 1

Stack Overflow用户

发布于 2013-05-24 04:52:41

这表明linux已经向您的进程提供了一个SIGTERM。这通常是应其他进程的请求(通过kill()),但也可以由您的进程发送给自己(使用raise())。此信号请求有序关闭进程。

如果你需要一个快速的信号号小抄,打开一个bash shell,然后:

代码语言:javascript
复制
$ kill -l
 1) SIGHUP   2) SIGINT   3) SIGQUIT  4) SIGILL
 5) SIGTRAP  6) SIGABRT  7) SIGBUS   8) SIGFPE
 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2
13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGSTKFLT
17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG  24) SIGXCPU
25) SIGXFSZ 26) SIGVTALRM   27) SIGPROF 28) SIGWINCH
29) SIGIO   30) SIGPWR  31) SIGSYS  34) SIGRTMIN
35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3  38) SIGRTMIN+4
39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8
43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12
47) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14
51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10
55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7  58) SIGRTMAX-6
59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
63) SIGRTMAX-1  64) SIGRTMAX    

您可以使用适当的信号处理程序来确定发送方,如下所示:

代码语言:javascript
复制
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>

void sigterm_handler(int signal, siginfo_t *info, void *_unused)
{
  fprintf(stderr, "Received SIGTERM from process with pid = %u\n",
      info->si_pid);
  exit(0);
}

int main (void)
{
  struct sigaction action = {
    .sa_handler = NULL,
    .sa_sigaction = sigterm_handler,
    .sa_mask = 0,
    .sa_flags = SA_SIGINFO,
    .sa_restorer = NULL
  };

  sigaction(SIGTERM, &action, NULL);
  sleep(60);

  return 0;
}

请注意,信号处理程序还包括对exit()的调用。您的程序也可以通过忽略该信号来继续执行,但通常不建议这样做(如果是用户在执行此操作,如果您的进程没有退出,则很可能会出现SIGKILL,这样您就失去了进行任何清理的机会)。

票数 63
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16723626

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档