gpt4 book ai didi

c - signal() 处理程序立即被解雇

转载 作者:太空宇宙 更新时间:2023-11-04 00:37:21 25 4
gpt4 key购买 nike

尝试使用 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!。我做错了什么?

最佳答案

传递函数名而不是调用函数

signal(SIGINT, terminate );

信号也接受类型的函数指针

void handler_function (int parameter);

关于c - signal() 处理程序立即被解雇,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26700174/

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