シグナルをキャッチ<ctrl> + <c>
してリストを出力するプログラムを作成しましたが、コンパイル時のエラーが1つあり、それを乗り越えられないようです。私はこのエラーを受け取り続けます:
割り当てで`void()()'を`void(*)(int)'に変換できません
コンパイラによると、エラーは次のコード行で発生しています。
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]);
}
}
}
私にはすべてがうまく見えますが、何かが明らかにそうではありません。誰かがこのエラーをスローしているものを知っていますか?