C中的简单信号代码,有些混乱

simple signal code in C, some confusion

这里是一些简单的 C 信号代码。我对这段代码背后的概念有几个问题。我的电脑上没有 Linux,所以请考虑向我解释这段代码背后的概念;非常感谢!

  1. 数组int list[]存储什么?它只是处理程序的数量吗?
  2. sleep()后面的list[i] = sig是什么意思?
  3. 这段代码的输出应该是什么;我的电脑上没有 Linux。
  4. 函数 void Dump() 的具体作用是什么?

这是代码

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

int list[10] = {0,0,0,0,0,0,0,0,0,0};
void handler(int sig) {
  int i = 0;
  while(list[i]!=0) { i++;}
  sleep(10);
  list[i] = sig;
  write(1, "Outta here\n" , 11) ;
}
void dump(int sig) {
  int i;
  for (i=0; i<10; i++) {
    printf("list[%d]=%d\n" , i, list[i]);
  }
  _exit(0);
}
main( ) {
  signal(SIGUSR1, handler);
  signal(SIGUSR2, handler) ;
  signal(SIGTERM, dump);
  printf("Handlers installed\n");
  while (1);
}
  1. 这是一个数组,存储了最近处理的10个信号,值为信号本身对应的数字
  2. 它正在将信号编号添加到数组,在下一个空闲索引处
  3. 输出应该是已处理信号的列表,一旦 SIGTERM 信号,对应于 SIGUSR1SIGUSR20 之一的数值被程序接收到。
  4. dump()函数输出存储在列表中的所有信号值