我有以下c代码:
void handler(int n) {
printf("n value: %i\n");
}
int main() {
signal(SIGTSTP, handler); // ^Z at keyboard
for(int n = 0; ; n++) {
}
}
Run Code Online (Sandbox Code Playgroud)
我很好奇处理函数中的n参数是什么.当你按^Z它时,通常打印:8320,-1877932264或-1073743664.这些数字是多少?
编辑: Ops我写错了printf.我纠正它是:
void handler(int n) {
printf("n value: %i\n",n);
}
Run Code Online (Sandbox Code Playgroud)
现在n的值总是:18.这是什么18?
您还没有将任何数字传递给printf().应该:
void handler(int n) {
printf("n value: %i \n", n);
}
Run Code Online (Sandbox Code Playgroud)
n在您的情况下,这将是您正在捕获的信号man 2 signal.请参阅说明.另请注意,联机帮助页建议使用sigaction()而不是signal.
你写它的方式,打印出随机的垃圾.原因是,你没有传递n给printf.它应该是
void handler(int n) {
printf("n value: %i \n", n);
}
Run Code Online (Sandbox Code Playgroud)
这样,它打印信号编号.
| 归档时间: |
|
| 查看次数: |
4069 次 |
| 最近记录: |