所以这里是C中的一些简单信号代码。我对这段代码背后的概念只有几个问题。我的计算机上没有Linux,所以请考虑向我解释这个代码背后的概念;我真的很感激!
int list[]
存储什么?它只是处理程序的数量吗?list[i] = sig
之后的sleep()
是什么意思?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);
}
答案 0 :(得分:2)
SIGUSR1
信号,输出应为处理信号列表,数字值对应SIGUSR2
,0
或SIGTERM
之一通过该计划。dump()
函数输出列表中存储的所有信号值