相关疑难解决方法(0)

Printf无法在C信号处理程序中工作

有问题的代码(最小化案例):

#include <stdio.h>
#include <signal.h>

int counter = 0;

void react_to_signal(int n) {
    fprintf(stderr, "Caught!\n");
    counter++;
}

int main(int argc, char** argv) {

    signal(SIGINFO, react_to_signal);

    while (1) {
        printf("%d\n", counter);
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我运行代码,它应该循环,打印出来0.然后在另一个shell ..

kill -s SIGINFO <pid_of_my_process>
Run Code Online (Sandbox Code Playgroud)

信号传递,c递增..但fprintf不会发生.

为什么会这样?处理程序代码在什么环境/上下文中运行?我在哪里可以读到这个?

c signals

5
推荐指数
1
解决办法
7458
查看次数

标签 统计

c ×1

signals ×1