开始就是放在后台运行什么的吧,但while部份是什么意思呢?是不是不完整呀!
#include "rbWatchDog.h"
void signalHandler(int sig_number)
{
int pid=find_pid("rbWatchDog");
intr=sig_number;
syslog(LOG_INFO, "[RBWATCHDOG] Sig Type [%d]!",intr);
sprintf(szWBuffer, "kill -9 %d", pid);
system(szWBuffer);
in8(0x443);
}
int main(int argc, char *argv[])
{
int pid;
signal (SIGTERM, signalHandler);
memset( szWBuffer, '\0', sizeof(szWBuffer) );
if (ThreadCtl(_NTO_TCTL_IO,0)==-1)
{
return 1;
}
if (mmap_device_io(1, 0x443)==(uintptr_t)MAP_FAILED)
{
return 1;
}
pid=find_pid("WatchDog");
if (pid>0)
{
if ( argc>1 && strcmp(argv[1], "stop")==0 )
{
printf("here\n");
sprintf(szWBuffer, "kill -9 %d", pid);
printf("command[%s]\n", szWBuffer);
printf("WATCHDOG stop running\n");
system(szWBuffer);
in8(0x443);
}
else
{
printf("WATCHDOG still running\n");
}
exit(-1);
}
else
{
printf("WATCHDOG starts running\n");
}
if (argc==1)
{
StartAsDaemon(); //fork a new process
}
else if(strcmp(argv[1], "stop")==0)
{
printf("No daemon running\n");
exit(-1);
}
else
{
printf("non daemon\n");
}
while(1)
{
out8(0x443, 60);
sleep(55);
}
return EXIT_SUCCESS;
}