gpt4 book ai didi

c - 为什么此示例代码在 Linux 上没有发出信号?

转载 作者:行者123 更新时间:2023-11-30 18:42:54 25 4
gpt4 key购买 nike

我试图理解以下有关信号的示例代码:

#include <signal.h>
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <unistd.h>

sig_atomic_t sigusr1_count = 0;

void handler(int signal_number) {
++sigusr1_count;
}

int main() {
struct sigaction sa;
memset(&sa, 0, sizeof(sa));
sa.sa_handler = &handler;
sigaction(SIGUSR1, &sa, NULL );
printf("SIGUSR1 was raised %d times\n", sigusr1_count);
return 0;
}

输出为:

SIGUSR1 was raised 0 times

为什么没有发出信号?

最佳答案

有几个原因。首先,没有任何东西会向您的进程发送 SIGUSR1。另一个更重要的一点是,你没有给任何人任何时间这样做。注册信号处理程序后,您会立即打印出在不到几毫秒的时间内接收到信号的次数。在打印结果之前,您需要添加类似 sleep(10) 的内容。

关于c - 为什么此示例代码在 Linux 上没有发出信号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13957776/

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