【问题标题】:gcc and llvm linux shutdown function from c codec代码中的gcc和llvm linux关闭功能
【发布时间】:2014-09-19 13:27:04
【问题描述】:

Linux x86-64 用 gcc 编译和静态链接我有:

#include <sys/reboot.h>

if (str[0] == 'r')
  reboot(0x1234567);

但我似乎找不到等效的关机函数调用。如果不同,我也想知道 llvm 函数。

【问题讨论】:

  • 查看文档。 linux.die.net/man/2/reboot 。但是,只有在您真的、真的知道自己在做什么时才调用 reboot() - 它会不安全地关闭/重新启动系统 - 您必须遵从 /sbin/shutdown 或 /sbin/reboot 命令来执行安全。

标签: c linux gcc system-calls llvm-gcc


【解决方案1】:

来自sys/reboot.h

/* Perform a hard reset now.  */
#define RB_AUTOBOOT     0x01234567

[...]

/* Stop system and switch power off if possible.  */
#define RB_POWER_OFF    0x4321fedc

所以reboot(0x4321fedc);reboot(RB_POWER_OFF); 应该可以工作。

【讨论】:

  • 啊,所以关机是重启的一个特例。可能因为我一开始是 Windows 用户,所以我认为 Reboot 是 Shutdown 的一个特例。
【解决方案2】:

试试

system("shutdown -h now");

【讨论】:

  • 这似乎不起作用。我在系统上只有 /boot 目录中的内核和 /sbin 目录中的静态编译的 init 文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-09
  • 1970-01-01
  • 1970-01-01
  • 2011-12-29
  • 2012-01-05
  • 1970-01-01
  • 2012-09-03
相关资源
最近更新 更多