什么是“收到信号 15”

2024-04-17

什么可能导致 C、MPI 程序使用名为的库日晷/CVODE https://computation.llnl.gov/casc/sundials/documentation/documentation.html(数值 ODE 求解器)在 Gentoo Linux 集群上运行,给我重复Signal 15 received.?

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

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

我找不到任何似乎相关的东西。我什至不知道从哪里开始看。 (这是从字面上理解“任何事情都有帮助”的问题之一。)

(顺便说一句,为什么 Chrome 的字典不识别“谷歌搜索”这个词?)。


这表明linux已经交付了SIGTERM到你的流程。这通常是应其他进程的请求(通过kill())但也可以由您的进程发送给自身(使用raise())。该信号请求有序关闭您的进程。

如果您需要信号数字的快速备忘单,请打开 bash shell 并:

$ 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    

您可以使用适当的信号处理程序来确定发送者,例如:

#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,并且那么你就失去了进行任何清理的机会)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

什么是“收到信号 15” 的相关文章

随机推荐