网上搞的一个看门狗程序,没看懂!能帮忙解释一下吗?

开始就是放在后台运行什么的吧,但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;
}

每隔55秒,向端口0x443写一个60。至于这个端口具体是什么,写一个60有什么含义,则要看实际的硬件了。