Unix-system-calls-reboot

提供:Dev Guides
移動先:案内検索

[top]#

[[File:]]

[[File:]]

|Web |This Site

  • 初心者向けのUnix *
  • 高度なUnix *

選択した読書

Copyright©2014 by finddevguides

  Home     References     Discussion Forums     About TP  

reboot()-Unix、Linuxシステムコール

[[File:]] image :http://www.finddevguides.com/images/next.gif [next] image:http://www.finddevguides.com/add- this.gif [AddThisソーシャルブックマークボタン]

広告

NAME

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 * *__flag __* *、void ** *__ arg __* *); * *

glibcでは、関連する定数の一部にRB_* というシンボリック名が付けられており、ライブラリー呼び出しは3引数システム呼び出しの1引数ラッパーです。

  • #include <unistd.h> * *#include <sys/reboot.h> *
*int reboot(int* __flag __ **); **

説明

*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進値には意味があります。)_flag_引数には、次の値を指定できます。

Tag

説明

*LINUX_REBOOT_CMD_RESTART*

(RB_AUTOBOOT、0x1234567)。 「Restarting system。」というメッセージが出力され、デフォルトの再起動がすぐに実行されます。 sync (2)が前にない場合、データは失われます。

*LINUX_REBOOT_CMD_HALT*

(RB_HALT_SYSTEM、0xcdef0123; 1.1.76以降)。 「システムが停止しました。」というメッセージが出力され、システムが停止します。 ROMモニターがある場合は、制御がROMモニターに与えられます。 sync (2)が前にない場合、データは失われます。

*LINUX_REBOOT_CMD_POWER_OFF*

(0x4321fedc; 2.1.30以降)。 「Power down。」というメッセージが出力され、システムが停止し、可能であればシステムからすべての電源が切断されます。 sync (2)が前にない場合、データは失われます。

*LINUX_REBOOT_CMD_RESTART2*

(0xa1b2c3d4; 2.1.30以降)。 「コマンド '%s’でシステムを再起動しています」というメッセージが出力され、すぐに再起動が実行されます(_arg_で指定されたコマンド文字列を使用)。 sync (2)が前にない場合、データは失われます。

*LINUX_REBOOT_CMD_CAD_ON*

(RB_ENABLE_CAD、0x89abcdef)。 CADが有効になっています。 これは、CADキーストロークがLINUX_REBOOT_CMD_RESTARTに関連付けられたアクションをすぐに引き起こすことを意味します。

*LINUX_REBOOT_CMD_CAD_OFF*

(RB_DISABLE_CAD、0)。 CADは無効です。 これは、CADキーストロークによりSIGINTシグナルがinit(プロセス1)に送信され、このプロセスが適切なアクション(すべてのプロセスを強制終了、同期、再起動)を決定することを意味します。

この機能を使用できるのはスーパーユーザーのみです。

上記のアクションの正確な効果は、アーキテクチャによって異なります。 i386アーキテクチャの場合、追加の引数は現在何もしていません(2.1.122)が、リブートのタイプはカーネルコマンドライン引数( 'reboot = …​')でウォームまたはコールドのいずれかに決定できます。ハードまたはBIOSを介して。

返り値

成功すると、ゼロが返されます。 エラーの場合、-1が返され、_errno_が適切に設定されます。

エラー

Tag Description
EFAULT Problem with getting userspace data under LINUX_REBOOT_CMD_RESTART2.
EINVAL Bad magic numbers or flag.
*EPERM * The calling process has insufficient privilege to call* reboot*(); the CAP_SYS_BOOT capability is required.

準拠

*reboot* ()はLinux固有であり、移植を目的としたプログラムでは使用しないでください。

関連項目

[[File:]] image :http://www.finddevguides.com/images/next.gif [next] [[File:]]

広告

  
Advertisements