2017-04-26 78 views
2

我打算开发一个跨平台的应用程序,可能需要在用户的操作系统关闭或重新启动之前进行处理。有没有办法暂时暂停或重写C++中的OS关闭/重新启动?有没有办法在C++中暂停OS关机或重启?

另外,该功能将完全由用户通过配置选择,默认情况下禁用。

我觉得这不可能不侵入操作系统,但我想我会问这个社区的想法。

如果我唯一的选择是为了实现这个功能而对操作系统进行一些“破解”,那么我不会再追求这个想法。 :)

在此先感谢!

+1

for windows这里是一个骗局:http://stackoverflow.com/questions/101647/how-to-schedule-a-task-to-run-when-shutting-down-windows – user463035818

+0

你可以创建一个批处理文件关闭计算机并用系统调用它(“mybatchfile.bat”); – Rafael

+1

对于Windows,请参阅https://msdn.microsoft.com/en-us/library/windows/desktop/aa376890(v=vs.85).aspx –

回答

3

有没有办法在C++中临时暂停或重写OS关机/重启?

标准C++中没有这样的功能。

除非有特定于平台的API来执行此操作,否则恐怕您将无法暂停或覆盖C++中的OS关闭/重新启动操作。

2

这里没有C++的东西。但典型的GUI(Windows,Mac等)会通知您的应用程序挂起关机,以便您可以进行最终处理。这是特定于操作系统,并遵守其规则。

+0

在mac中,您可以要求os不要关机,将取消操作并询问用户是否强制关闭它,在linux中 没有这样的事情,它会关闭,不管你是否喜欢它(因为只有root通常可以命令关闭) 在windows中,那里将是一个延迟之后,一切将被迫关闭(至少在7,从未尝试过8或10) – Qchmqs

0

要覆盖计划/正在关机,您可以:

对于Windows 7

system("shutdown /a"); 

对于Linux

system("shutdown -c"); 
0

我用Google搜索了相关文章认为how to detect Linux shutdown/reboot 但似乎很难实现你的目的。

从我脑海中想到的是;如果您可以将您的程序作为服务添加,那么Linux系统将在其关闭之前关闭该服务。

好运

0

感谢所有的回应和想法!

从收到的反馈来看,似乎没有“安全”和跨平台的方式来轻松使用C++来实现此类功能。

Pete Becker提到那里可能有每个操作系统的具体规则。这是有道理的,而且这些规则也总是会有变化。

其他人建议使用system()命令。但是,这可能会在系统中引入进一步的问题和漏洞(1)(2)(可能有更好的解释和/或示例,所以请在发现它们时编辑此帖子)。

考虑到上述所有情况,我的建议是将应用程序配置为让用户通过GUI手动执行这些进程(完全由他们完成),在启动操作系统时执行这些进程,或者同时执行这两个进程。

再次感谢所有回复!

相关问题