一、Linux下重启系统

linux下很简单,直接看代码:

#include <unistd.h>
#include <sys/reboot.h>bool rebootSystem()
{sync();if (reboot(RB_AUTOBOOT) < 0){return false;}return true;
}

sync函数:将缓存中的数据写入磁盘,防止数据丢失。
reboot函数:对于关机或重启,该函数若成功,则无返回值;若失败,则返回-1。

reboot(RB_AUTOBOOT)  // 重启
reboot(RB_POWER_OFF) // 关机

二、Windows下重启系统

win下也不难,稍麻烦,看代码如下:

#include <Windows.h>// for OpenProcessToken()、LookupPrivilegeValueA()、AdjustTokenPrivileges()
#pragma comment (lib, "Advapi32.lib")
// for ExitWindowsEx()
#pragma comment (lib, "user32.lib")bool rebootSystem()
{HANDLE hToken;TOKEN_PRIVILEGES tkp;// 获取进程标志if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken)){return false;}// 获取关机特权的LUIDLookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid);tkp.PrivilegeCount = 1;tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;// 获取这个进程的关机特权AdjustTokenPrivileges(hToken, false, &tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0);if (GetLastError() != ERROR_SUCCESS){return false;}// 强制重启计算机if ( !ExitWindowsEx(EWX_REBOOT | EWX_FORCE, 0)){return false;}return true;
}

注释写的够清楚了,不多说。
另外特别注意的是,链接时需要Advapi32.lib、user32.lib,已直接通过代码指定链接这2个库了。

ExitWindowsEx(EWX_REBOOT | EWX_FORCE, 0)  // 重启
ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE, 0) // 关机

若对你有帮助,欢迎点赞、收藏、评论,你的支持就是我的最大动力!!!

同时,阿超为大家准备了丰富的学习资料,欢迎关注公众号“超哥学编程”,即可领取。

在Windows/Linux下调用API函数实现重启系统相关推荐

  1. 安装oracle后重启电脑很卡,关于linux下安装oracle之后,重启系统后oracle不能正常启动的配置总结...

    一.linux下无法启动sqlplus 问题描述: [root@localhost oracle]# su - oracle [oracle@localhost oracle]$ sqlplus &q ...

  2. Linux 下调用UEFI的函数

    Linux 下调用UEFI的函数 摘要 Linux 调用UEFI function 时候调用约定的转换 64bits calling convention Microsoft calling conv ...

  3. Linux系统接口ioc,Linux下SCSI API研究及应用

    Linux下SCSI API研究及应用 Linux SCSI体系结构及API数据结构的操作原理和相关的系统调用,运用SCSI API实现了有关的数据存储. 关键词: SCSI通用驱动器  SCSI接口 ...

  4. 【转】matlab与C/C++混合编程——在Windows/Linux上调用Matlab编译的动态库文件

    转自:matlab与C/C++混合编程--在Windows/Linux上调用Matlab编译的动态库文件_sinat_18131557的博客-CSDN博客 date version comments ...

  5. linux getline参数,Linux下的getline函数

    最近在做国嵌的mp3项目,在mp3主控程序中用到了这个函数,挺好使的,在这里记录一下.注意是linux下的,不是C++中的. 函数原型 ssize_t getline(char **lineptr, ...

  6. sleep头文件linux,Linux下的sleep函数 要用的话得包涵什么头文件啊?

    Linux下的sleep函数 要用的话得需要#include sleep把进程的运行状态改为睡眠,将其从系统可执行队列去掉,这样系统就不会调度到该进程,不会分配CPU时间片,同时根据该进程的睡眠时间, ...

  7. [转帖]关于Linux下的icotl函数

    关于Linux下的icotl函数 最近接触android开发,因为有时间所以就关注了下android的源码,在跟踪源码过程中到最后都会遇到icotl函数,虽然在Symbian中曾经遇到过RSocket ...

  8. C#调用API函数EnumWindows枚举窗口的方法

    C#调用API函数EnumWindows枚举窗口的方法 原文 http://blog.csdn.net/dengta_snowwhite/article/details/6067928 与C++不同, ...

  9. c调用python函数_python - Linux C调用Python 函数

    1.Python脚本,名称为py_add.py def add(a=,b=): print('Function of python called!') print('a = ',a) print('b ...

最新文章

  1. 职场新人:工作七大忌
  2. h5执行php函数,值得一个的5个强大的HTML5API 函数
  3. 我很明确自己未来的方向,计算机和经济外加管理
  4. 2019编译ffepeg vs_如何在windows10下使用vs2017编译最新版本的FFmpeg和ffplay
  5. Python __name__ == ‘__main__’详细解释-Python零基础入门教程
  6. 在Ubuntu8.04上简单定制个性化的Terminal操作界面
  7. java 编程字体_Java 是否可以为整个应用程序设置自定义字体?
  8. python 文字转语音wav_使用Python实现文字转语音并生成wav文件的例子
  9. 计算机组装与维护精品,国家精品课程——《计算机组装与维护》.pdf
  10. 国产操作系统(Linux)技术流派
  11. dsp28335时钟 总结
  12. 戴尔显示rpc服务器,swmm(暴雨管理模型)安装完成后运行显示 RPC服务器不可用
  13. 拉普拉斯方程的解matlab,急求用matlab编写解拉普拉斯方程的程序
  14. openbci脑电帽3d打印文件下载
  15. 说明书中电磁兼容部分指南和制造商的声明怎么写?
  16. 计算机顶级会议排名以及英文投稿的一点经验
  17. 三星s8怎么分屏操作_一心三用 三星Galaxy Z Fold2 5G成多任务处理大师
  18. Nginx源码阅读:ngx_palloc 内存池
  19. 2021年安全员-C证(陕西省)考试资料及安全员-C证(陕西省)新版试题
  20. 如何使用Android模拟器创建Android虚拟设备

热门文章

  1. 开心截图,拖拽大作战
  2. CCNA路由器及通信
  3. 手淘 flexible
  4. 显示器点距 测试软件,在小屏幕上使用高分的点距问题_液晶显示器_液晶显示器新闻-中关村在线...
  5. 啊哦,软著申请,收到了补正通知
  6. Kali-密码生成工具-crunch
  7. Unity免费的优质场景资源
  8. Activiti流程执行历史数据查询
  9. uboot启动 -- uboot基本启动流程
  10. 使用swagger报错:Exception encountered during context initialization - cancelling refresh attempt解决方法