Provided by: manpages-ja-dev_0.5.0.0.20161015+dfsg-1_all
名前
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 引数には以下の値を指定できる。 LINUX_REBOOT_CMD_CAD_OFF (RB_DISABLE_CAD, 0) CAD を無効にする。 これ以降に CAD キーストロークが入力される と、 SIGINT シグナルが init (プロセス 1) に送られる。 このシグナルを受けると、おそ らく init プロセスは 前もって定められた動作を行うことになる (多分すべてのプロセスの kill, sync, 再起動)。 LINUX_REBOOT_CMD_CAD_ON (RB_ENABLE_CAD, 0x89abcdef) CAD を有効にする。 これ以降に CAD キーストロークが入力 されると、 ただちに LINUX_REBOOT_CMD_RESTART に関連付けられた動作が行われるようにな る。 LINUX_REBOOT_CMD_HALT (RB_HALT_SYSTEM, 0xcdef0123; Linux 1.1.76 以降) "System halted." というメッセージ が表示され、システムは停止 (halt) する。 制御は ROM モニタに移る (ROM モニタがある 場合)。 先に sync(2) を行なわないと、データが失われる。 LINUX_REBOOT_CMD_KEXEC (RB_KEXEC, 0x45584543, Linux 2.6.13 以降) kexec_load(2) を使って事前にロードされた カーネルを実行する。このオプションが利用できるのは、カーネルのコンフィグで CONFIG_KEXEC が有効になっている場合にのみである。 LINUX_REBOOT_CMD_POWER_OFF (RB_POWER_OFF, 0x4321fedc; Linux 2.1.30 以降) "Power down" というメッセージが表示 され、システムは停止 (stop) する。 可能な場合はシステムの電源が落とされる。 先に sync(2) を行なわないと、データが失われる。 LINUX_REBOOT_CMD_RESTART (RB_AUTOBOOT, 0x1234567) "Restarting system." というメッセージが表示され、 デフォ ルトの再起動処理がただちに実行される。 先に sync(2) を行なわないと、データが失われ る。 LINUX_REBOOT_CMD_RESTART2 (0xa1b2c3d4; Linux 2.1.30 以降) "Restarting system with command '%s'" というメッ セージが表示され、 ただちに ( arg に指定されたコマンドを用いて) 再起動 (restart) が 行われる。 先に sync(2) を行なわないと、データが失われる。 LINUX_REBOOT_CMD_SW_SUSPEND (RB_SW_SUSPEND, 0xd000fce1; Linux 2.5.18 以降). システムがディスクにサスペンド (ハ イバネーション) される。このオプションはカーネルで CONFIG_HIBERNATION が有効になっ ている場合にのみ利用できる。 スーパーユーザーだけが reboot() を呼び出すことができる。 上述のアクションの実際の効果はアーキテクチャーに依存する。 i386 アーキテクチャーでは、現在 のところ (2.1.122) 付加引数は 何も行わないが、再起動のタイプをカーネルのコマンドライン引数 ("reboot=...") によって定めることができる。 これには warm または cold と、 hard または BIOS 経由の再起動を 設定できる。 PID 名前空間内での動作 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 が適切に設定される。
エラー
EFAULT LINUX_REBOOT_CMD_RESTART2 の時にユーザースペースのデータの取得に問題があった。 EINVAL magic の数字か cmd が間違っている。 EPERM 呼び出し元プロセスに reboot() を呼び出すのに十分な権限がなかった。 CAP_SYS_BOOT ケーパビリティが必要である。
準拠
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/ に書かれている。