Provided by: manpages-ja-dev_0.5.0.0.20221215+dfsg-1_all bug

名前

       reboot - 再起動する。または Ctrl-Alt-Delを有効・無効にする

書式

       /* カーネル 2.1.30 以降では、定数としてシンボリックな名前
          LINUX_REBOOT_* が定義されており、呼び出しの第 4 引数として
          指定することができる。*/

       #include <unistd.h>
       #include <linux/reboot.h>

       int reboot(int magic, int magic2, int cmd, void *arg);

       /* Under glibc and most alternative libc's (including uclibc, dietlibc,
          musl and a few others), some of the constants involved have gotten
          symbolic names RB_*, and the library call is a 1-argument
          wrapper around the system call: */

       #include <unistd.h>
       #include <sys/reboot.h>

       int reboot(int cmd);

説明

       reboot()  はシステムを再起動する。または再起動のキーストロークである Ctrl-Alt-Delete (CAD)
       を有効/無効にする。 このキーストロークは loadkeys(1)  によって変更できる。

       magicLINUX_REBOOT_MAGIC1 (値は 0xfee1dead) であり、かつ magic2LINUX_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 名前空間内での動作
       Since Linux 3.4, if reboot()  is called from a PID namespace other than  the  initial  PID
       namespace  with  one  of  the  cmd  values  listed  below,  it performs a "reboot" of that
       namespace: the "init" process of the PID namespace is  immediately  terminated,  with  the
       effects described in pid_namespaces(7).

       The values that can be supplied in cmd when calling reboot()  in this case are as follows:

       LINUX_REBOOT_CMD_RESTART, LINUX_REBOOT_CMD_RESTART2
              The  "init"  process is terminated, and wait(2)  in the parent process reports that
              the child was killed with a SIGHUP signal.

       LINUX_REBOOT_CMD_POWER_OFF, LINUX_REBOOT_CMD_HALT
              The "init" process is terminated, and wait(2)  in the parent process  reports  that
              the child was killed with a SIGINT signal.

       For the other cmd values, reboot()  returns -1 and errno is set to EINVAL.

返り値

       cmd  がシステムの停止や再起動を表す値の場合、呼び出しが成功すると  reboot()   は返らない。
       cmd が他の値の場合には、成功すると 0 が返る。 cmd の値に関わらず、失敗の場合には  -1  が返
       り、 errno が適切に設定される。

エラー

       EFAULT LINUX_REBOOT_CMD_RESTART2 の時にユーザースペースのデータの取得に問題があった。

       EINVAL magic の数字か cmd が間違っている。

       EPERM  The  calling  process  has insufficient privilege to call reboot(); the caller must
              have the CAP_SYS_BOOT inside its user namespace.

準拠

       reboot()  は Linux に特有であり、移植を考慮したプログラムでは用いるべきではない。

関連項目

       systemctl(1),   systemd(1),   kexec_load(2),   sync(2),   bootparam(7),   capabilities(7),
       ctrlaltdel(8), halt(8), shutdown(8)

この文書について

       この man ページは Linux man-pages プロジェクトのリリース 5.10 の一部である。プロジェクトの
       説明とバグ報告に関する情報は https://www.kernel.org/doc/man-pages/ に書かれている。