尝试使用this function实施流程中断处理 以下代码在OS X 10.10上运行:
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include "sys/wait.h"
sig_t terminate(){
printf("Thanks for the fish!\n");
exit(EXIT_SUCCESS);
}
int main(int argc, const char * argv[]) {
signal(SIGINT, terminate());
while (1){
printf("P");
}
}
问题是,运行程序后立即调用terminate
函数。手段,一个看不到一个P
,但只看到一行Thanks for the fish!
。我做错了什么?
答案 0 :(得分:4)
传递函数名称而不是调用函数
signal(SIGINT, terminate );
此外,signal采用类型为
的函数指针void handler_function (int parameter);
答案 1 :(得分:3)
您的信号处理程序与所需原型不匹配。您应重新定义terminate()
以int
为参数并返回void
。
即,
void terminate(int sig) {
printf("Thanks for the fish!\n");
exit(EXIT_SUCCESS);
}
// ...
signal(SIGINT, terminate);