gpt4 book ai didi

c - C中的简单信号代码,有些困惑

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:16:01 24 4
gpt4 key购买 nike

这里是一些简单的 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. 输出应该是已处理信号的列表,对应于 SIGUSR1SIGUSR20 之一的数值一次程序接收到 SIGTERM 信号。
  4. dump()函数输出存储在列表中的所有信号值

关于c - C中的简单信号代码,有些困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29981870/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com