如何实现程序的自动重启
程序出错后 需要重新从main函数处开始运行  使用goto语句不在同一函数中 不可行   调用main函数占着以前的资源不放 
那怎么能让程序发现自己错误后 自己关闭后 让他 自己开始再运行起来 谢谢了
------解决方案--------------------你可以建立一个父进程,它负责启动你的进程,并且在发现子进程失败后,重启子进程。
------解决方案--------------------或者写一个脚本放在后台,定时监控进程。
------解决方案--------------------二楼的说法靠谱,main函数里做的事情放到子进程里,main里就放一个管理子进程的父进程。
------解决方案--------------------Win下是这样实现的。
思想为:
不需要另外创建一个程序,只需创建一个自己的“副本”进程即可。  
 1。接收参数改变,将新参数保存;  
 2。用CreateProcess创建一个自己的“克隆”进程——即新的“Instance”;  
 3。结束自己。  
 4。与此同时,“克隆”进程读取刚才保存的新参数,并且以新的参数开始运行。
void CChatClientDlg::RestartApp()
{
	PROCESS_INFORMATION   info;  
	STARTUPINFO startup;  
	char szPath[128];  
	char *szCmdLine;    
	GetModuleFileName(AfxGetApp()->m_hInstance,   szPath,   sizeof(szPath));  
	szCmdLine=GetCommandLine();  
	GetStartupInfo(&startup);    
	BOOL bSucc=CreateProcess(szPath,   szCmdLine,   NULL,   NULL,  
		FALSE,   NORMAL_PRIORITY_CLASS,   NULL,   NULL,   &startup,   &info);    
	if(bSucc)  
	{  
		CWnd *pWnd=AfxGetMainWnd();  		
		if(pWnd!=NULL)  
		{  
			pWnd->PostMessage(WM_CLOSE,   0,   0);//会调用OnCancel
		}  
		else  
			ExitProcess(-1);  
	}  
	else  
		ExitProcess(-1);
}