程序如何才能自己重新启动自己?

daqianyu 2005-09-26 04:30:17
兄弟,写了段程序,但运行时间长就把系统弄的特别慢,杀死进程后,系统恢复正常,我还想继续运行本程序,就得手工启动本程序,如何能自己重新启动自己?
...全文
357 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
cangus 2005-10-08
  • 打赏
  • 举报
回复
修正BUG也要讲究方法,可持续发展嘛~~~~~~~~~~~~^_^
DentistryDoctor 2005-10-08
  • 打赏
  • 举报
回复
void Restartme()
{
STARTUPINFO si = {sizeof(si)};
SECURITY_ATTRIBUTES saProcess,saThread;
saProcess.nLength = sizeof(saProcess);
saProcess.lpSecurityDescriptor = NULL;
saProcess.bInheritHandle = TRUE;

saThread.nLength = sizeof(saThread);
saThread.lpSecurityDescriptor = NULL;
saThread.bInheritHandle = FALSE;

char szFileName[256]={0};
GetModuleFileName(NULL,szFileName,256);

PROCESS_INFORMATION piProcess;
if(CreateProcess(NULL,szFileName,&saProcess,&saThread,FALSE,0,NULL,NULL,&si,&piProcess))
{
}
// 退出此进程实例
TerminateProcess(GetCurrentProcess(),0);
}
DentistryDoctor 2005-10-08
  • 打赏
  • 举报
回复
bug还是需要修复的,只是简单的重启不是解决问题的方法。
qrlvls 2005-10-06
  • 打赏
  • 举报
回复
应该是资源泄漏造成的,正确的方法是从根本上找到泄漏的原因,而不是通过这种方法避开,会养成不好的工作习惯,可能这也是很多人有过的经历,不过最终还是需要自己努力去解决的
laogong165 2005-10-05
  • 打赏
  • 举报
回复
但运行时间长就把系统弄的特别慢
------------------------------
呵呵
netgm 2005-10-05
  • 打赏
  • 举报
回复
void ReStart(BOOL bNormal)
{
char szPath[128];
GetModuleFileName(AfxGetApp()->m_hInstance, szPath, sizeof(szPath));
DWORD dwProcessId = GetCurrentProcessId();
char szCmdLine[128];
sprintf(szCmdLine, "%s %lx", szPath, dwProcessId);
STARTUPINFO startup;
GetStartupInfo(&startup);
PROCESS_INFORMATION info;
BOOL bSucc = CreateProcess(szPath, NULL, NULL, NULL,
FALSE, NORMAL_PRIORITY_CLASS, NULL, NULL, &startup, &info);
if(bNormal)
{
CWnd* pWnd = AfxGetMainWnd();
if(pWnd != NULL)
{
pWnd->PostMessage(WM_CLOSE, 0, 0);
}
}
else
{
ExitProcess(-1);
}
}
Baku 2005-10-01
  • 打赏
  • 举报
回复
强烈同意 yndfcd(YNDFCD), 要不bug会越堆越高,最后烂摊子谁收拾?
---
深受其害...
xrdsheng 2005-09-29
  • 打赏
  • 举报
回复
在WM_QUIT消息处理里面加入
ShellExecute(...)重启新的你的进程不就得了
吹泡泡的小猫 2005-09-26
  • 打赏
  • 举报
回复
检查程序,看看资源泄漏
周江涛 2005-09-26
  • 打赏
  • 举报
回复
写成服务吧,错误处理为自动重启。
zxyjyzxyjy 2005-09-26
  • 打赏
  • 举报
回复
这种情况,我觉得对自已要求严一些,检查程序为什么变慢,对自已提高也快啊。
phoenix96_2000 2005-09-26
  • 打赏
  • 举报
回复
先检查你的内存泄露~ 等问题~

和启动别的程序没区别,CreateProcess

当然你要恢复上次运行状态,那就保存设置

至于什么时候该重启了,自己检查资源是否占用过多...
yndfcd 2005-09-26
  • 打赏
  • 举报
回复
为什么不想办法修改程序,而要用这种欺骗的手法呢?

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧