Я написал программу, которая ловит сигналы <ctrl> + <c>
, а затем выводит список, но у меня есть одна ошибка времени компиляции, которую я не могу пропустить. Я постоянно получаю эту ошибку:Ошибка времени компиляции Struct
cannot convert `void()()' to `void (*)(int)' in assignment
Согласно компилятором ошибка происходит в этой строке кода:
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 определяется ранее в программе как собственная функция – Bigby
Вы должны включить это в свой вопрос. –