
先启动和自己同样的进程,再关闭自己。
如果你使用QT,可以像下面那样做:
C/C++ code#include <QtGui> class Temp : public QWidget { Q_OBJECT private: QLabel label; QPushButton button; public: Temp(QWidget parent = 0); public slots: void ClickedButton(); }; Temp::Temp(QWidget parent) : QWidget(parent) { button = new QPushButton("restart", this); QVBoxLayout layout = new QVBoxLayout; layout->addWidget(button); setLayout(layout); move(200, 200); connect(button, SIGNAL(clicked()), this, SLOT(ClickedButton())); } void Temp::ClickedButton() { QProcess p = new QProcess(this); QString str = QApplication::applicationFilePath(); p->startDetached(str); close(); } #include "mainmoc" int main(int argc, char argv[]) { QApplication app(argc, argv); Temp temp = new Temp; temp->show(); return appexec(); }
解决方法
(1)重启支持:在应用程序升级完成或崩溃后自动重启(这个特性对所有类型的MFC应用都有效)。
(2)应用恢复支持:重新打开之前已经打开的文档;恢复自动保存的文档(这个特性只对文档/试图类型的MFC应用有效)。
对于新建的MFC应用程序和已存在的应用,获取重启管理器支持的方法是不同的。对于新的应用只需要两步:
(1)使用MFC应用向导创建一个新的MFC应用程序;
(2)在高级特性设置页(Advance features page)中,选中“Support Resart Manager”复选框。
这里可以有3中不同的选项。
启动系统故障恢复控制台方法有两个:
一是从安装光盘启动
插入Windows XP的安装光盘,并且在BIOS中设置为优先从CDROM启动,启动电脑以后,系统会自动进入Windows XP安装界面选项,按下“R”键选择第二项“要使用‘系统故障控制台’修复Windows XP安装,请按R。”系统自动登录到故障恢复控制台。
二是在XP运行的时候安装
具体方法:先将WindowsXP安装启动盘插入光驱,在开始菜单中选择运行(或按“Win键+R”)打开运行对话框,输入命令X\1386\WINNT32EXE/CMDCONS(其中X是装载XP的光驱盘符),当系统询问你是否安装命令恢复控制台,选择是,就出现了安装向导,之后选择跳过网络更新,等文件复制完毕,安装成功。重新启动后,在启动列表中可以看到MicrosoftWindowsXP Recovery Console这个选项了。
一些常用命令:
Bootcfg:这是最常用的命令,输入Bootcfg后,你将看到它的几个参数,没错,它是用来配置启动信息的,假如你原来的系统是Windows98+WindowsXP,重装Windows 98后,发现WindowsXP无法启动了,就用上面所说的第一种方法启动WindowsXP命令恢复控制台,输入Bootcfg/add或Bootcfg/scan命令,其中前者是自己手动添加WindowsXP的启动列表,格式为:Multi(0)disk(x)rdisk(0)partition(y),其中X为XP所在的硬盘,Y为XP在第几分区,后者为程序自动扫描硬盘,自动添加。另外,Bootcfg/copy是用来备份WindowsXP启动文件Bootini的,Bootcfg/default是用来配置默认启动项的。
Diskpart:用来创建和删除硬盘驱动器上的分区。语法格式是:Diskpart [/add/delete][device_name drive_name partition_name] [size] 。实例:删除F分区——diskpart /delete F: 创建一个200MB 的分区——diskpart/addDeviceHardDisk0 200。
Fixboot:系统分区错误,无法启动的情况就可以通过它直接恢复。用法如下:fixboot[drive],drive为将要写入引导扇区的驱动器。例如fixbootd:就是向驱动器D:的系统分区写入新的分区引导扇区。注意:如果不带任何参数,fixboot命令将向用户登录的系统分区写入新的区引导扇区。
Disable/Enable:在控制台中,某些高级功能和服务是无法使用的,此时就要通过这两个命令来设置或取消各种服务了。Disable禁用系统服务或设备驱动程序。Enable用于启用这些服务和驱动程序。用法如下:disable/enable(servicename)(device_driver_name),servce_name,要禁用或启用的系统服务名称。devicedriver_name,要禁用或启用的设备驱动程序名称。注意:使用disable时,上次启动类型名称将显示在屏幕上。记下该名称,以便在需要时使用enable命令将启动类型恢复。
如果不需要故障恢复控制台了,可以手工将它删除。
1、打开“我的电脑”,双击安装了故障恢复控制台的驱动器,假设为C盘。
2、进入C盘根目录,删除“Cmdcons”文件夹、Cmldr文件。
3、右键单击Bootini 文件,选择“属性”,在打开的窗口中清除“只读”复选框,“确定”退出。
4、再用“记事本”中打开Bootini文件,删除故障恢复控制台的条目,保存文件后关闭,最后再恢复Bootini文件的只读属性即可。
这里所需要的python依赖项相对较少,只需要安装下schedule即可(这个包很小,无需镜像也会很快装完),这个是定时任务时会用到的,直接在运行的python环境下执行以下命令:
pip install schedule
1
1
二、重启任务
这一部分我们将贴出代码,大致逻辑是先检测到我们要重启的程序id,然后kill掉之后,进行重新启动,代码如下:
import os,sys,schedule
import subprocess,time
def restart_frp():
child =subprocessPopen(["pgrep","-f","xxx"],stdout=subprocessPIPE,)
pid=childstdoutread()decode("utf-8")strip()
#print(pid)
if pid!="":
ossystem("kill -9 "+pid)
child2=subprocessPopen("xxx",stdout=subprocessPIPE,shell=True)
print(timestrftime("%Y-%m-%d %H:%M",timelocaltime()))
if __name__ == '__main__':
restart_frp()
scheduleevery()hourdo(restart_frp)
while True:
schedulerun_pending()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
其中的xxx均为你要 *** 作的程序名称
三、bug记录
自己在运行中若遇到如下错误:在这里插入描述
则执行如下 *** 作:
第一步,执行命令
ls -l /bin/sh
1
1
若显示结果为:/bin/sh -> dash,那就执行第二步:
sudo dpkg-reconfigure dash (出现窗口选择no)
1
1
第三步,再次执行命令:
ls -l /bin/sh
1
1
显示为 /bin/sh -> bash后,重新运行程
首先在程序的开头加入一句定义,sfr SAP = 0xe7;
SAP 是名称,可以随意改写
之后在外部中断或程序内添加一个按键检测的语句
例如
if(K1==0)//如果按键被按下
{
YS(20);//延时去抖
if(K1==0)//如果是有效按键触发
{
SAP=0x60;//执行软复位
}
}
此按键处理语句即可实现单片机的软复位 *** 作
至于sfr SAP = 0xe7;这一条语句可以放在#include<reg52h>头文件下面
#include<reg52h>
sfr SAP = 0xe7
sbit K1=P3^3;//按键
至于这两个地址0x60和0xe7代表什么,我也查阅了很多资料
1功能键法启动Windows时,如果感到启动画面显示的时间太长,在启动时按[Esc]键即可跳过启动画面。再使用[开始]→[关闭系统]→[重新启动计算机]时,先按下[Shift]键,单击“是”,系统可以跳过自检,直接进入Windows。
2快捷图标法即在桌面上创建一个快速重启的快捷方式。
:关机的正确方法:
1关闭所有程序。
首先要关闭打开的所有程序。最好一个也不要留。这样才不会忘记保存文件。关机速度也会加快。
2关闭计算机。
关闭所有程序后再按“开始/关闭计算机/关闭”,关闭计算机。
3关闭显示器。
计算机显示关机完成,显示器黑屏后,就可以关闭显示器了。请不要先关闭显示器,这样无法看出计算机是否已经完全关闭。
4关闭电源。
把总电源,即插排上的电源也关闭。这样电脑就关闭完成了。记住把总电源也关掉,这也是为了环保。
以上就是关于C++中怎么实现程序重新启动全部的内容,包括:C++中怎么实现程序重新启动、请问怎样重新启动应用程序、如何重启一个控制台程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)