程序如何自己重启自己

zzyoucancancan 2014-07-19 04:48:05

void __stdcall GameServer::recv_cs2gs_info()
{
Packet pk = {0};
m_spCenterTcpLink->get_data_packet(&pk);
Protocol pt = {0};
if(!pt.from_buffer(pk.buffer, pk.size))
{
switch (pt.cmd_type)
{
case GS_CLOSE:
break;
case GS_RESTART:
//当收到这个命令时需要自己重启自己
break;
default:
break;
}
}

}
//这个是GameServer中的一个接收消息的函数,当命令类型是GS_RESTART时需要自己重启自己,就是GameServer重启GameServer
//我想问问大家都有什么好的方法,网上查需要脚本啥的
//有没有简便的方法,不需要重新创建进程的,我用的是vs2012,和c++builder xe6
...全文
1132 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
vnvlyp 2014-07-20
  • 打赏
  • 举报
回复
我觉得你这个思路有问题,你应该通过自身重启服务,比如释放资源恢复状态再重新初始化运行,而不是通过操作系统这种作弊一样的方式
unituniverse2 2014-07-19
  • 打赏
  • 举报
回复
引用 10 楼 zzyoucancancan 的回复:
自己找到一种方法。 system("a.bat"); ::TerminateProcess(::GetCurrentProcess(), 0); a.bat中只是启动程序
如果这方法有时候有效有时候不起作用,我不会感到奇怪
zzyoucancancan 2014-07-19
  • 打赏
  • 举报
回复
自己找到一种方法。 system("a.bat"); ::TerminateProcess(::GetCurrentProcess(), 0); a.bat中只是启动程序
阿呆_ 2014-07-19
  • 打赏
  • 举报
回复
Windows下只要调用WinExec(...)或者CreateProcess(...)传入命令行启动自己的副本然后exit()就可以了
zilaishuichina 2014-07-19
  • 打赏
  • 举报
回复
CreateProcess
zzyoucancancan 2014-07-19
  • 打赏
  • 举报
回复
引用 6 楼 tujiaw 的回复:
start Test.exe你看下是不是路径不对
路径是正确的,我干肯定,但执行之后就直接退出了,没有启动新的程序,我在程序中是system("a.bat")运行的
ningto.com 2014-07-19
  • 打赏
  • 举报
回复
start Test.exe你看下是不是路径不对
ningto.com 2014-07-19
  • 打赏
  • 举报
回复
引用 4 楼 zzyoucancancan 的回复:
[quote=引用 3 楼 tujiaw 的回复:] 写个bat批处理文件,执行这个文件就可以了。
taskkill /IM Test.exe start Test.exe 这样不行啊,自己都结束了,执行不了啊[/quote] 只要批处理启动了,Test.exe关了又没关系的,在kill与start之间加个延时试下,或者再检查下看哪里有问题。
zzyoucancancan 2014-07-19
  • 打赏
  • 举报
回复
引用 3 楼 tujiaw 的回复:
写个bat批处理文件,执行这个文件就可以了。
taskkill /IM Test.exe start Test.exe 这样不行啊,自己都结束了,执行不了啊
ningto.com 2014-07-19
  • 打赏
  • 举报
回复
写个bat批处理文件,执行这个文件就可以了。
「已注销」 2014-07-19
  • 打赏
  • 举报
回复
CreateProcess...
阿呆_ 2014-07-19
  • 打赏
  • 举报
回复
保存启动时传入的命令行,需要重启时释放所有资源然后直接调用exec族命令执行这个命令行,或者不打算手动释放资源那么fork(),子进程exec()这个命令行,父进程exit()
Frida是一款免费的,基于Python和JavaScript来实现的,面向开发人员、逆向工程师和安全研究人员的动态检测工具包。 Frida拥有一套全面的测试套件,不但调试效率极高,而且在广泛的使用中经历了多年严格的测试。 尤其是,移动应用安全测试和服务巨头NowSecure对齐钟爱有加,在NowSecure内部,安全人员通过Frida这个工具套装,已经完成对大量的移动应用程序大规模深度的安全分析测试。目前依然在该公司的安全测试中扮演重要的角色。 基于Python和JavaScript的Frida,天生就是跨平台的动态调试工具,不但可以运行在Windows、Linux、macOS之上,而且还可以调试Windows应用程序、Linux应用程序,macOS、iOS、Andriod和QNX等几乎全平台的应用程序。可以说,一旦掌握Frida这套工具,就可以在全平台,对全平台的应用程序进行动态调试和分析。 Frida使用极其方便,在使用过程中,只需将你编写的JavaScript脚本通过Frida自身的工具注入到目标进程中,就可以HOOK任何功能,其中包括但不限于监视加密API或跟踪应用程序关键代码等。在使用过程中,无需知道被“研究”程序的源代码。 尤其是可以一边编辑JavaScript脚本,一边运行JavaScript脚本的功能对于调试分析来说极为友好。只需“保存”正在编辑的JavaScript脚本,就立即就能看到该脚本执行的结果,全称无需其它人工介入,也无需重新启动被“研究”的应用程序,极大地简化了分析流程,同时也极大地提高了工作效率。因此,得到了众多安全分析人士的青睐。 本课程从最基本的调试环境搭建开始,基于经典的Windows“扫雷”游戏的动态调试分析,编码等,循序渐进演示Firda在分析调试Windows应用程序中基本使用方法和技巧。拥有这些知识储备之后,在加上官方的参考文档,你就可以轻松地将这些知识“迁移”至分析和调试其他平台的应用程序。 课程资料,请看第一课中github链接。

64,643

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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