programing

"신호 15 수신"이란 무엇입니까?

newstyles 2023. 8. 12. 10:04

"신호 15 수신"이란 무엇입니까?

Gentoo Linux 클러스터에서 실행되는 SUNDIALS/CVODE(숫자 ODE 솔버)라는 라이브러리를 사용하는 C, MPI 프로그램이 반복 표시되는 원인은 무엇입니까?Signal 15 received.?

그 코드는 MPI, Sundials, Linux, C 또는 누가 발행하고 있습니까?

저는 C, MPI, SUNDIALS/CVODE 및 Linux와 같은 기술을 가진 초보자입니다.

저는 메시지를 검색해도 관련이 있는 것처럼 보이는 것을 찾을 수 없습니다.어디서부터 손을 대야 할지 모르겠어요.(이것은 "도움이 되는 모든 것"이 문자 그대로 받아들여지는 질문 중 하나입니다.)

(외시적으로/추후적으로 크롬 사전에서 "구글링"이라는 단어를 인식하지 못하는 이유는 무엇입니까?)

이것은 Linux가 다음을 제공했음을 나타냅니다.SIGTERM당신의 과정에.이는 일반적으로 다른 프로세스의 요청에 의한 것입니다.kill()하지만 프로세스에 의해 자체로 전송될 수도 있습니다(사용).raise()) 이 신호는 프로세스의 정상적인 종료를 요청합니다.

신호 번호에 대한 빠른 부정행위가 필요한 경우 bash 셸을 열고 다음을 수행합니다.

$ 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이 뒤따를 가능성이 높고 정리할 기회를 잃게 됩니다).

언급URL : https://stackoverflow.com/questions/16723626/what-is-signal-15-received