【发布时间】:2015-05-01 05:04:31
【问题描述】:
这里有一些简单的 C 信号代码。我对这段代码背后的概念有几个问题。我的电脑上没有 Linux,所以请考虑向我解释这段代码背后的概念;我真的很感激!
- 数组
int list[]存储什么?只是处理程序的数量吗? -
list[i] = sig后面的sleep()是什么意思? - 这段代码的输出应该是什么;我的计算机上没有 Linux。
- 函数
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);
}
【问题讨论】:
-
你应该在你的电脑上安装 Linux(也许在一些虚拟机里)