REBOOT(2) | Linux Programmer's Manual | REBOOT(2) |
reboot - 再起動する。または Ctrl-Alt-Delを有効・無効にする
/* libc4 と libc5
でのライブラリコールとシステムコールは同じである。
またカーネル 2.1.30
以降では、定数としてシンボリックな名前
LINUX_REBOOT_*
が定義されており、呼び出しの第
4 引数として
指定することができる。*/
#include <unistd.h>
#include <linux/reboot.h>
int reboot(int magic, int magic2, int cmd, void *arg);
/* glibc
では、関連する定数に
RB_*
というシンボリックな名前が付け
られている。ライブラリ関数の引数は
1 つで、3
引数のシステムコールの
ラッパ (wrapper)
となっている。 */
#include <unistd.h>
#include <sys/reboot.h>
int reboot(int cmd);
reboot() はシステムを再起動する。または再起動のキーストロークである Ctrl-Alt-Delete (CAD) を有効/無効にする。 このキーストロークは loadkeys(1) によって変更できる。
magic が LINUX_REBOOT_MAGIC1 (値は 0xfee1dead) であり、かつ magic2 が LINUX_REBOOT_MAGIC2 (672274793) でなければこのシステムコールは失敗し、 EINVAL が返される。 しかし 2.1.17 からは LINUX_REBOOT_MAGIC2A (85072278) が、 また 2.1.97 からは LINUX_REBOOT_MAGIC2B (369367448) が、 2.5.71 からは LINUX_REBOOT_MAGIC2C (537993216) が magic2 の値として指定できるようになった (これらの定数の 16 進での 表記にはちょっとした意味がある)。
cmd 引数には以下の値を指定できる。
スーパーユーザーだけが reboot() を呼び出すことができる。
上述のアクションの実際の効果はアーキテクチャーに依存する。 i386 アーキテクチャーでは、現在のところ (2.1.122) 付加引数は 何も行わないが、再起動のタイプをカーネルのコマンドライン引数 ("reboot=...") によって定めることができる。 これには warm または cold と、 hard または BIOS 経由の再起動を 設定できる。
Linux 3.4 以降では、 reboot() が最初の PID 名前空間以外の PID 名前空間 (pid_namespaces(7) 参照) から呼び出された場合、 呼び出しの効果として、 名前空間の "init" プロセスへシグナルが送信される。 LINUX_REBOOT_CMD_RESTART とLINUX_REBOOT_CMD_RESTART2 の場合、 SIGHUP シグナルが送信される。 LINUX_REBOOT_CMD_POWER_OFF と LINUX_REBOOT_CMD_HALT の場合、 SIGINT シグナルが送信される。
cmd がシステムの停止や再起動を表す値の場合、呼び出しが成功すると reboot() は返らない。 cmd が他の値の場合には、成功すると 0 が返る。 cmd の値に関わらず、失敗の場合には -1 が返り、 errno が適切に設定される。
reboot() は Linux に特有であり、移植を考慮したプログラムでは用いるべきではない。
kexec_load(2), sync(2), bootparam(7), capabilities(7), ctrlaltdel(8), halt(8), reboot(8)
この man ページは Linux man-pages プロジェクトのリリース 3.79 の一部 である。プロジェクトの説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。
2015-02-01 | Linux |