我编写了一个程序,捕获<ctrl> + <c>信号,然后输出一个列表,但是我遇到了一个编译时错误,似乎无法解决。我不断收到此错误:



根据编译器,错误发生在以下代码行:

    handler.sa_handler = handle_SIGINT;

这也是周围的代码:
cmdcounter = 1;

/*set up the signal handler*/
struct sigaction handler;
handler.sa_handler = handle_SIGINT;
sigaction(SIGINT, &handler, NULL);

strcpy(buffer, "Caught <ctrl><c>\n");
handle_SIGINT在程序的前面定义:
void handle_SIGINT()
{
    write(STDOUT_FILENO, buffer, strlen(buffer));

    // Print out last 10 commands that were used.
    printf("Most recent commands entered:\n");
    if(cmdcounter <= 10) {
        for (i=0; i < cmdcounter; i++) {
            printf("%d. %s\n", i+1, cmd[i]);
        }
    }
    else {
        for (i = cmdcounter-10; i < cmdcounter; i++) {
            printf("%d. %f\n", i, cmd[i]);
        }
    }
}

一切对我来说看起来不错,但显然不对。有人知道引发此错误的原因吗?

最佳答案

您的函数handle_SIGINT错误。

向我们展示该功能,我们将能够准确告诉您它是怎么错的。
handle_SIGINT应该是:

void handle_SIGINT(int){....}

您忽略了int部分作为参数。

关于c - 结构编译时错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10761884/

10-11 22:12
查看更多