#include #include #include #include #include "HanoiMsgQueue.h" void Initialize(); void Solve(int *,int *,int *,int); void CreateMessageQueue(); void DiscardMessageQueue(); void SignalALRMHandler(int); void SignalHandler(int); void SendTowerState(); int *naA; //棒A int *naB; //棒B int *naC; //棒C int nMoves = 0; //総移動回数 int nDisks = 20; //円盤数 int nSignalALRMReceived = 0; int nAlarmInterval = 5; int main(int argc, char *argv[]) { int nPid; if (argc > 2) { fprintf(stderr,"Usage: %s [number_of_disks]\n", argv[0]); exit(1); } if (argc == 2) nDisks = atoi(argv[1]); signal(SIGALRM, SignalALRMHandler); alarm(nAlarmInterval); signal(SIGINT , SignalHandler); signal(SIGQUIT, SignalHandler); signal(SIGTERM, SignalHandler); Initialize(); CreateMessageQueue(); Solve(naA, naB, naC, nDisks); DiscardMessageQueue(); free(naA); free(naB); free(naC); return 0; } void Initialize() { int i; naA = (int*)malloc(sizeof(int)*nDisks); naB = (int*)malloc(sizeof(int)*nDisks); naC = (int*)malloc(sizeof(int)*nDisks); for (i=0; i