reboot(2)

الاسم
reboot - إعادة التشغيل أو تمكين/تعطيل Ctrl-Alt-Del

المكتبة
مكتبة سي المعيارية (libc، -lc)

موجز
/* منذ إصدار Linux 2.1.30، توجد أسماء رمزية LINUX_REBOOT_*
   للثوابت وحجة رابعة للدعوة: */

#include <linux/reboot.h>  /* Definition of LINUX_REBOOT_* constants */
#include <sys/syscall.h>   /* Definition of SYS_* constants */
#include <unistd.h>

int syscall(SYS_reboot, int magic, int magic2, int op, void *arg);

/* في مكتبة glibc ومعظم مكتبات libc البديلة (بما في ذلك uclibc و dietlibc و
   musl وبعض المكتبات الأخرى)، أُعطيت بعض الثوابت المعنية
   أسماء رمزية من النوع RB_*، ويُعد استدعاء المكتبة عبارة عن غلاف
   ذي حجة واحدة يحيط باستدعاء النظام: */

#include <sys/reboot.h>    /* Definition of RB_* constants */
#include <unistd.h>

int reboot(int op);

الوصف
استدعاء reboot() يعيد تشغيل النظام، أو يمكّن/يعطل مفتاح إعادة التشغيل (مختصر CAD، لأن المبدئي هو Ctrl-Alt-Delete؛ يمكن تغييره باستخدام loadkeys(1)).

يفشل استدعاء النظام هذا (مع الخطأ EINVAL) ما لم يساوِ magic LINUX_REBOOT_MAGIC1 (أي 0xfee1dead) ويساوِ magic2 LINUX_REBOOT_MAGIC2 (أي 0x28121969). لكن منذ لينكس 2.1.17 يُسمح أيضًا بـ LINUX_REBOOT_MAGIC2A (أي 0x05121996) ومنذ لينكس 2.1.97 يُسمح أيضًا بـ LINUX_REBOOT_MAGIC2B (أي 0x16041998) ومنذ لينكس 2.5.71 يُسمح أيضًا بـ LINUX_REBOOT_MAGIC2C (أي 0x20112000) كقيم لـ magic2. (القيم السداسية عشر لهذه الثوابت ذات معنى.)

يمكن أن تأخذ وسيطة op القيم التالية:

LINUX_REBOOT_CMD_CAD_OFF
    (RB_DISABLE_CAD, 0). يُعطل CAD. يعني هذا أن مفتاح CAD سيسبب إرسال إشارة SIGINT إلى init (العملية 1)، حيث قد تقرر هذه العملية إجراءً مناسبًا (ربما: قتل كل العمليات، مزامنة، إعادة تشغيل).

LINUX_REBOOT_CMD_CAD_ON
    (RB_ENABLE_CAD, 0x89abcdef). يُمكن CAD. يعني هذا أن مفتاح CAD سيسبب فورًا الإجراء المرتبط بـ LINUX_REBOOT_CMD_RESTART.

LINUX_REBOOT_CMD_HALT
    (RB_HALT_SYSTEM, 0xcdef0123; منذ لينكس 1.1.76). تُطبع الرسالة "System halted." ويُوقف النظام. يُعطى التحكم لمراقب ROM، إن وُجد. إذا لم يسبقه sync(2)، ستُفقد البيانات.

LINUX_REBOOT_CMD_KEXEC
    (RB_KEXEC, 0x45584543, منذ لينكس 2.6.13). ينفذ نواة حُمّلت سابقًا باستخدام kexec_load(2). هذا الخيار متاح فقط إذا ضُبطت النواة مع CONFIG_KEXEC.

LINUX_REBOOT_CMD_POWER_OFF
    (RB_POWER_OFF, 0x4321fedc; منذ لينكس 2.1.30). تُطبع الرسالة "Power down." ويُوقف النظام، وتُزال كل الطاقة من النظام، إن أمكن. إذا لم يسبقه sync(2)، ستُفقد البيانات.

LINUX_REBOOT_CMD_RESTART
    (RB_AUTOBOOT, 0x1234567). تُطبع الرسالة "Restarting system." ويُجرى إعادة تشغيل مبدئي فورًا. إذا لم يسبقه sync(2)، ستُفقد البيانات.

LINUX_REBOOT_CMD_RESTART2
    (0xa1b2c3d4؛ بدءًا من لينكس 2.1.30). ُتطبع الرسالة ”إعادة تشغيل النظام باستخدام الأمر '%s'“، وتُنفذ عملية إعادة التشغيل (باستخدام سلسلة الأوامر المحددة في arg) على الفور. وإذا لم يسبقها استدعاء sync(2)، فستفقد البيانات.

LINUX_REBOOT_CMD_SW_SUSPEND
    (RB_SW_SUSPEND, 0xd000fce1; منذ لينكس 2.5.18). يُعلق النظام (يُسبت) على القرص. هذا الخيار متاح فقط إذا ضُبطت النواة مع CONFIG_HIBERNATION.

فقط المستخدم الفائق يمكنه استدعاء reboot().

التأثير الدقيق للإجراءات أعلاه يعتمد على البنية. لبنية i386، الوسيطة الإضافية لا تفعل شيئًا حاليًا (2.1.122)، لكن يمكن تحديد نوع إعادة التشغيل بواسطة وسائط سطر أوامر النواة ("reboot=...") لتكون إما دافئة أو باردة، وإما صلبة أو عبر BIOS.

  السلوك داخل مساحات أسماء PID
منذ لينكس 3.4، إذا استُدعي reboot() من مساحة اسم PID غير المساحة الأولية مع إحدى قيم op المدرجة أدناه، فإنه ينفذ "إعادة تشغيل" لتلك المساحة: تُنهى عملية "init" لمساحة اسم PID فورًا، مع التأثيرات الموصوفة في pid_namespaces(7).

القيم التي يمكن توفيرها في op عند استدعاء reboot() في هذه الحالة هي كما يلي:

LINUX_REBOOT_CMD_RESTART
LINUX_REBOOT_CMD_RESTART2
    تنتهي عملية "init"، ويُبلغ wait(2) في العملية الأم بأن الابن قُتل بإشارة SIGHUP.

LINUX_REBOOT_CMD_POWER_OFF
LINUX_REBOOT_CMD_HALT
    تنتهي عملية "init"، ويُبلغ wait(2) في العملية الأم بأن الابن قُتل بإشارة SIGINT.

بالنسبة لقيم op الأخرى، تُرجع reboot() -1 ويُضبط errno على EINVAL.

قيمة الإرجاع
بالنسبة لقيم op التي توقف أو تعيد تشغيل النظام، لا يعود الاستدعاء الناجح لـ reboot(). بالنسبة لقيم op الأخرى، يُرجع صفر عند النجاح. في جميع الحالات، يُرجع -1 عند الفشل، ويُضبط errno للإشارة إلى الخطأ.

الأخطاء

EFAULT
    مشكلة في الحصول على بيانات مساحة المستخدم تحت LINUX_REBOOT_CMD_RESTART2.

EINVAL
    أرقام سحرية خاطئة أو op.

EPERM
    لا تملك العملية المستدعية صلاحية كافية لاستدعاء reboot()؛ يجب أن يمتلك المستدعي CAP_SYS_BOOT داخل مساحة المستخدم الخاصة به.

المعايير
لينكس.

انظر أيضًا
systemctl(1), systemd(1), kexec_load(2), sync(2), bootparam(7), capabilities(7), ctrlaltdel(8), halt(8), shutdown(8)

ترجمة
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.