.\" -*- coding: UTF-8 -*- .\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH clock_nanosleep 2 "29 أكتوبر 2025" "صفحات دليل لينكس 6.18" .SH الاسم clock_nanosleep \- نوم عالي الدقة مع ساعة قابلة للتحديد .SH المكتبة مكتبة C القياسية (\fIlibc\fP,\ \fI\-lc\fP)، منذ glibc 2.17 .P قبل glibc 2.17، مكتبة الوقت الحقيقي (\fIlibrt\fP،\ \fI\-lrt\fP) .SH موجز \fB#include \fP .nf .P \fBint clock_nanosleep(clockid_t \fP\fIclockid\fP\fB, int \fP\fIflags\fP\fB,\fP \fB const struct timespec *\fP\fIt\fP\fB,\fP \fB struct timespec *_Nullable \fP\fIremain\fP\fB);\fP .fi .P .RS -4 متطلبات ماكروات اختبار الميزات لـ glibc (انظر \fBfeature_test_macros\fP(7)): .RE .P \fBclock_nanosleep\fP(): .nf _POSIX_C_SOURCE >= 200112L .fi .SH الوصف مثل \fBnanosleep\fP(2)، يسمح \fBclock_nanosleep\fP() للخيط المستدعي بالنوم لفترة زمنية محددة بدقة نانوثانية. يختلف في السماح للمستدعي باختيار الساعة التي سيتم قياس فترة النوم مقابلها، وفي السماح بتحديد فترة النوم إما كقيمة مطلقة أو نسبية. .P يتم تحديد قيم الوقت التي تم تمريرها وإرجاعها بواسطة هذه الاستدعاء باستخدام بنى \fBtimespec\fP(3). .P .\" Look in time/posix-timers.c (kernel 5.6 sources) for the .\" 'struct k_clock' structures that have an 'nsleep' method تحدد الوسيطة \fIclockid\fP الساعة التي سيتم قياس فترة النوم مقابلها. يمكن أن تحتوي هذه الوسيطة على إحدى القيم التالية: .TP \fBCLOCK_REALTIME\fP ساعة وقت حقيقي قابلة للضبط على مستوى النظام. .TP \fBCLOCK_TAI\fP (منذ لينكس 3.10) ساعة على مستوى النظام مشتقة من وقت الساعة الجدارية ولكنها تحسب الثواني الكبيسة. .TP \fBCLOCK_MONOTONIC\fP .\" On Linux this clock measures time since boot. ساعة غير قابلة للضبط، متزايدة بشكل رتيب تقيس الوقت منذ نقطة غير محددة في الماضي لا تتغير بعد بدء تشغيل النظام. .TP \fBCLOCK_BOOTTIME\fP (منذ Linux 2.6.39) مطابق لـ \fBCLOCK_MONOTONIC\fP، باستثناء أنه يتضمن أيضًا أي وقت يكون فيه النظام معلقًا. .TP \fBCLOCK_PROCESS_CPUTIME_ID\fP .\" There is some trickery between glibc and the kernel .\" to deal with the CLOCK_PROCESS_CPUTIME_ID case. ساعة قابلة للضبط لكل عملية تقيس وقت وحدة المعالجة المركزية المستهلك بواسطة جميع الخيوط في العملية. .P .\" Sleeping against CLOCK_REALTIME_ALARM and CLOCK_BOOTTIME_ALARM .\" is also possible (tested), with CAP_WAKE_ALARM, but I'm not .\" sure if this is useful or needs to be documented. انظر \fBclock_getres\fP(2) لمزيد من التفاصيل حول هذه الساعات. بالإضافة إلى ذلك، يمكن أيضًا تمرير معرفات ساعة وحدة المعالجة المركزية التي يتم إرجاعها بواسطة \fBclock_getcpuclockid\fP(3) و \fBpthread_getcpuclockid\fP(3) في \fIclockid\fP. .P إذا كانت \fIflags\fP تساوي 0، فسيتم تفسير القيمة المحددة في \fIt\fP على أنها فترة نسبية للقيمة الحالية للساعة المحددة بواسطة \fIclockid\fP. .P إذا كانت \fIflags\fP هي \fBTIMER_ABSTIME\fP، فسيتم تفسير \fIt\fP على أنه وقت مطلق كما تم قياسه بواسطة الساعة، \fIclockid\fP. إذا كان \fIt\fP أقل من أو يساوي القيمة الحالية للساعة، فإن \fBclock_nanosleep\fP() يعود فورًا دون تعليق الخيط المستدعي. .P يعلق \fBclock_nanosleep\fP() تنفيذ الخيط المستدعي حتى ينقضي على الأقل الوقت المحدد بواسطة \fIt\fP، أو يتم تسليم إشارة تتسبب في استدعاء معالج إشارة أو إنهاء العملية. .P إذا تمت مقاطعة الاستدعاء بواسطة معالج إشارة، يفشل \fBclock_nanosleep\fP() مع الخطأ \fBEINTR\fP. بالإضافة إلى ذلك، إذا لم يكن \fIremain\fP فارغًا، ولم تكن \fIflags\fP هي \fBTIMER_ABSTIME\fP، فإنه يعيد الوقت المتبقي غير المنوم في \fIremain\fP. يمكن بعد ذلك استخدام هذه القيمة لاستدعاء \fBclock_nanosleep\fP() مرة أخرى وإكمال نوم (نسبي). .SH "قيمة الإرجاع" عند النوم بنجاح للفترة المطلوبة، يعيد \fBclock_nanosleep\fP() 0. إذا تمت مقاطعة الاستدعاء بواسطة معالج إشارة أو واجه خطأ، فإنه يعيد أحد أرقام الأخطاء الموجبة المدرجة في الأخطاء. .SH الأخطاء .TP \fBEFAULT\fP حدد \fIt\fP أو \fIremain\fP عنوانًا غير صالح. .TP \fBEINTR\fP تمت مقاطعة النوم بواسطة معالج إشارة؛ انظر \fBsignal\fP(7). .TP \fBEINVAL\fP القيمة في حقل \fItv_nsec\fP لم تكن في النطاق [0, 999999999] أو \fItv_sec\fP كانت سالبة. .TP \fBEINVAL\fP كان \fIclockid\fP غير صالح. (\fBCLOCK_THREAD_CPUTIME_ID\fP ليست قيمة مسموح بها لـ \fIclockid\fP.) .TP \fBENOTSUP\fP لا يدعم النواة النوم مقابل \fIclockid\fP هذا. .SH المعايير POSIX.1\-2024. .SH التاريخ POSIX.1\-2001. Linux 2.6، glibc 2.1. .SH ملاحظات إذا كانت الفترة المحددة في \fIt\fP ليست مضاعفًا دقيقًا لدقة الساعة الأساسية (انظر \fBtime\fP(7))، فسيتم تقريب الفترة إلى المضاعف التالي. علاوة على ذلك، بعد اكتمال النوم، قد لا يزال هناك تأخير قبل أن تصبح وحدة المعالجة المركزية حرة لتنفيذ الخيط المستدعي مرة أخرى. .P استخدام مؤقت مطلق مفيد لمنع مشاكل انحراف المؤقت من النوع الموصوف في \fBnanosleep\fP(2). (تتفاقم هذه المشاكل في البرامج التي تحاول إعادة تشغيل نوم نسبي يتم مقاطعته بشكل متكرر بواسطة الإشارات.) لأداء نوم نسبي يتجنب هذه المشاكل، استدع \fBclock_gettime\fP(2) للساعة المطلوبة، أضف الفترة المطلوبة إلى قيمة الوقت المعادة، ثم استدع \fBclock_nanosleep\fP() مع العلم \fBTIMER_ABSTIME\fP. .P لا يتم إعادة تشغيل \fBclock_nanosleep\fP() أبدًا بعد مقاطعته بواسطة معالج إشارة، بغض النظر عن استخدام العلم \fBSA_RESTART\fP الخاص بـ \fBsigaction\fP(2). .P الوسيطة \fIremain\fP غير مستخدمة، وغير ضرورية، عندما تكون \fIflags\fP هي \fBTIMER_ABSTIME\fP. (يمكن إعادة تشغيل النوم المطلق باستخدام نفس الوسيطة \fIt\fP.) .P يحدد POSIX.1 أن \fBclock_nanosleep\fP() ليس له تأثير على ترتيبات الإشارات أو قناع الإشارة. .P يحدد POSIX.1 أنه بعد تغيير قيمة ساعة \fBCLOCK_REALTIME\fP عبر \fBclock_settime\fP(2)، يجب استخدام قيمة الساعة الجديدة لتحديد الوقت الذي ستستيقظ فيه خيط محظور على \fBclock_nanosleep\fP() المطلقة؛ إذا تجاوزت قيمة الساعة الجديدة نهاية فترة السكون، فإن استدعاء \fBclock_nanosleep\fP() سيعود فورًا. .P يحدد POSIX.1 أن تغيير قيمة ساعة \fBCLOCK_REALTIME\fP عبر \fBclock_settime\fP(2) لن يكون له أي تأثير على خيط محظور على \fBclock_nanosleep\fP() النسبي. .SH "انظر أيضًا" \fBclock_getres\fP(2)، \fBnanosleep\fP(2)، \fBrestart_syscall\fP(2)، \fBtimer_create\fP(2)، \fBsleep\fP(3)، \fBtimespec\fP(3)، \fBusleep\fP(3)، \fBtime\fP(7) .PP .SH ترجمة تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي . .PP هذه الترجمة هي وثيقة مجانية؛ راجع .UR https://www.gnu.org/licenses/gpl-3.0.html رخصة جنو العامة الإصدار 3 .UE أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات. .PP إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: .MT kde-l10n-ar@kde.org .ME .