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已经退出,脚本才执行起来,其实脚本没有问题。

 建议使用”阻塞“代码来执行脚本。

posted @   夕西行  阅读(186)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
历史上的今天:
2020-01-17 函数返回值是引用类型,此函数当左值、右值
2019-01-17 5.2 SW1控制LED1亮灭(中断功能)
点击右上角即可分享
微信分享提示