exe重启自己,WinExec非阻塞、system阻塞
使用bat脚本,先杀死exe进程,再启动exe
restart.bat
@echo off ::注意保存编码格式为ANSI,否则中文乱码 taskkill /f /im "Restart.exe" echo "exe进程停止成功" ::休眠10s timeout /t 10 /nobreak start "" "E:\Restart\x64\Debug\Restart.exe" echo "exe进程启动成功"
控制台程序 Restart.exe
main.cpp
#include<Windows.h> int main() { Sleep(5000); //WinExec("restart.bat", SW_HIDE); //非阻塞 system("restart.bat"); //阻塞 }
restart.bat放到生成的Restart.exe路径中,双击exe即可。
注意,WinExec和system都是执行脚本的函数,但是前者是非阻塞的,后者是阻塞的。
使用”非阻塞“代码时,提示没找到进程。原因是程序已经执行完毕,exe已经退出,脚本才执行起来,其实脚本没有问题。
建议使用”阻塞“代码来执行脚本。