問題はかなり単純なものに違いありませんが..それが何であるかわかりません。しばらくの間、「alaarm」を出力し続ける必要がありますが、それは一度だけ実行され、その後プログラムは終了します。
#include <stdio.h>
#include <stdlib.h>
#include <sys/time.h>
#include <signal.h>
void onAlarm();
void setupAlarm() {
signal(SIGALRM, onAlarm);
alarm(1);
}
void onAlarm() {
setupAlarm();
printf("alarmmmmmmmmmmmmmmmmm\n");
}
void main()
{
setupAlarm();
sleep(1000);
}
ここで何が問題なのですか?を取り出すsleep(1000)
と、プログラムは即座に終了します (つまり、「alaaarm」が 1 つも表示されません)。
答え
OK、次のコードが機能します。
void onAlarm() {
printf("alarmmmmmmmmmmmmmmmmm\n");
alarm(1);
sleep(1);
}
void main()
{
signal(SIGALRM, onAlarm);
alarm(1);
sleep(2);
}
しかし、私はまだこれに手を巻いており、なぜこのようにコーディングする必要があるのか を理解しようとしています.