有没有办法在C ++中暂停操作系统关机或重启?

时间:2017-04-26 19:16:57

标签: c++ operating-system cross-platform

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

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

我觉得如果不侵入操作系统,这可能是不可能的,但我想我会要求社区的想法。

如果我唯一的选择是为了实现这个功能而某种程度上“破解”操作系统,那么我将不会再进一步​​追求这个想法了。 :)

提前致谢!

5 个答案:

答案 0 :(得分:3)

  

有没有办法在C ++中临时暂停或覆盖OS关闭/重启?

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

除非有特定于平台的API,否则我恐怕您无法在C ++中暂停或覆盖操作系统关闭/重启操作。

答案 1 :(得分:2)

C ++中没有任何内容可以解决这个问题。但是典型的GUI(Windows,Mac等)会通知您的应用程序挂起关闭,以便您可以进行最终处理。这是操作系统特有的,并受其规则的约束。

答案 2 :(得分:0)

要覆盖计划/进行中的关闭,您可以:

对于Windows 7

system("shutdown /a");

对于Linux

system("shutdown -c");

答案 3 :(得分:0)

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

我的想法是什么;如果你可以将程序添加为服务,linux系统将在关闭之前关闭服务。

祝你好运

答案 4 :(得分:0)

感谢所有回复和想法!

根据收到的回复判断,似乎没有“安全”和跨平台的方式使用C ++轻松实现这些功能。

Pete Becker提到每个操作系统可能有特定的规则。这是有道理的,这些规则也总是可以改变。

其他人建议使用system()命令。但是,这可能会在系统中引入更多问题和漏洞(1) (2)(可能会有更好的解释和/或示例,因此如果/找到它们,请编辑此帖子。)

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

再次感谢所有回复的人!