.\" -*- coding: UTF-8 -*- .\" Copyright 1993, Darren Senn .\" Copyright 2016, Michael Kerrisk .\" Copyright, the authors of the Linux man-pages project .\" .\" %%%LICENSE_START(FREELY_REDISTRIBUTABLE) .\" May be freely distributed and modified .\" %%%LICENSE_END .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH getitimer 2 "8 فبراير 2026" "صفحات دليل لينكس 6.18" .SH الاسم getitimer, setitimer \- الحصول أو تعيين قيمة مؤقت فاصل زمني .SH المكتبة مكتبة سي المعيارية (\fIlibc\fP،\ \fI\-lc\fP) .SH موجز .nf \fB#include \fP .P \fBint getitimer(int \fP\fIwhich\fP\fB, struct itimerval *\fP\fIcurr_value\fP\fB);\fP \fBint setitimer(int \fP\fIwhich\fP\fB, const struct itimerval *restrict \fP\fInew_value\fP\fB,\fP \fB struct itimerval *_Nullable restrict \fP\fIold_value\fP\fB);\fP .fi .SH الوصف توفر استدعاءات النظام هذه الوصول إلى مؤقتات الفاصل الزمني، أي المؤقتات التي تنتهي مبدئيًا في نقطة ما في المستقبل، و(اختياريًا) على فترات منتظمة بعد ذلك. عندما ينتهي مؤقت، يتم توليد إشارة للعملية المستدعية، ويتم إعادة ضبط المؤقت إلى الفاصل الزمني المحدد (إذا كان الفاصل الزمني غير صفري). .P يتم توفير ثلاثة أنواع من المؤقتات\[em]محددة عبر وسيطة \fIwhich\fP\[em]، كل منها يحسب مقابل ساعة مختلفة ويولد إشارة مختلفة عند انتهاء المؤقت: .TP \fBITIMER_REAL\fP يحسب هذا المؤقت تنازليًا في الوقت الحقيقي (أي وقت الساعة الحائطية). عند كل انتهاء، يتم توليد إشارة \fBSIGALRM\fP. .TP \fBITIMER_VIRTUAL\fP يحسب هذا المؤقت تنازليًا مقابل وقت وحدة المعالجة المركزية في وضع المستخدم الذي تستهلكه العملية. (يشمل القياس وقت وحدة المعالجة المركزية الذي تستهلكه جميع الخيوط في العملية.) عند كل انتهاء، يتم توليد إشارة \fBSIGVTALRM\fP. .TP \fBITIMER_PROF\fP يحسب هذا المؤقت تنازليًا مقابل إجمالي وقت وحدة المعالجة المركزية (أي كل من المستخدم والنظام) الذي تستهلكه العملية. (يشمل القياس وقت وحدة المعالجة المركزية الذي تستهلكه جميع الخيوط في العملية.) عند كل انتهاء، يتم توليد إشارة \fBSIGPROF\fP. .IP بالاقتران مع \fBITIMER_VIRTUAL\fP، يمكن استخدام هذا المؤقت لتحليل وقت وحدة المعالجة المركزية للمستخدم والنظام الذي تستهلكه العملية. .P تمتلك العملية واحدًا فقط من كل نوع من الأنواع الثلاثة للمؤقتات. .P يتم تعريف قيم المؤقت بواسطة الهياكل التالية: .P .in +4n .EX struct itimerval { struct timeval it_interval; /* Interval for periodic timer */ struct timeval it_value; /* Time until next expiration */ }; \& struct timeval { time_t tv_sec; /* seconds */ suseconds_t tv_usec; /* microseconds */ }; .EE .in .\" .SS getitimer() تضع الدالة \fBgetitimer\fP() القيمة الحالية للمؤقت المحدد بواسطة \fIwhich\fP في المخزن المؤقت المشار إليه بواسطة \fIcurr_value\fP. .P يتم ملء البنية الفرعية \fIit_value\fP بمقدار الوقت المتبقي حتى الانتهاء التالي للمؤقت المحدد. تتغير هذه القيمة مع عد المؤقت تنازليًا، وسيتم إعادة ضبطها إلى \fIit_interval\fP عند انتهاء المؤقت. إذا كان كلا حقلي \fIit_value\fP صفرًا، فإن هذا المؤقت غير مسلح حاليًا (غير نشط). .P يتم ملء البنية الفرعية \fIit_interval\fP بالفاصل الزمني للمؤقت. إذا كان كلا حقلي \fIit_interval\fP صفرًا، فهذا مؤقت أحادي الطلقة (أي ينتهي مرة واحدة فقط). .SS setitimer() تقوم الدالة \fBsetitimer\fP() بتسليح أو نزع سلاح المؤقت المحدد بواسطة \fIwhich\fP، عن طريق ضبط المؤقت على القيمة المحددة بواسطة \fInew_value\fP. إذا كان \fIold_value\fP غير NULL، يتم استخدام المخزن المؤقت الذي يشير إليه لإرجاع القيمة السابقة للمؤقت (أي نفس المعلومات التي يتم إرجاعها بواسطة \fBgetitimer\fP()). .P إذا كان أي حقل في \fInew_value.it_value\fP غير صفري، فسيتم تسليح المؤقت لينتهي مبدئيًا في الوقت المحدد. إذا كان كلا الحقلين في \fInew_value.it_value\fP صفرًا، فسيتم نزع سلاح المؤقت. .P يحدد حقل \fInew_value.it_interval\fP الفاصل الزمني الجديد للمؤقت؛ إذا كان كلا حقليه الفرعيين صفرًا، يكون المؤقت أحادي الطلقة. .SH "قيمة الإرجاع" عند النجاح، يُعاد الصفر. وعند حدوث خطأ، يُعاد الرقم \-1، ويُضبط \fIerrno\fP للإشارة إلى الخطأ. .SH الأخطاء .TP \fBEFAULT\fP \fInew_value\fP، أو \fIold_value\fP، أو \fIcurr_value\fP ليس مؤشراً صالحاً. .TP \fBEINVAL\fP \fIwhich\fP ليس واحدًا من \fBITIMER_REAL\fP أو \fBITIMER_VIRTUAL\fP أو \fBITIMER_PROF\fP؛ أو (منذ Linux 2.6.22) أحد حقول \fItv_usec\fP في البنية المشار إليها بواسطة \fInew_value\fP يحتوي على قيمة خارج النطاق [0, 999999]. .SH الإصدارات المعايير صامتة بشأن معنى الاستدعاء: .P .in +4n .EX setitimer(which, NULL, &old_value); .EE .in .P تتعامل العديد من الأنظمة (Solaris و BSDs وربما غيرها) مع هذا على أنه مكافئ لـ: .P .in +4n .EX getitimer(which, &old_value); .EE .in .P في Linux، يتم التعامل مع هذا على أنه مكافئ لاستدعاء تكون فيه حقول \fInew_value\fP صفرًا؛ أي أن المؤقت معطل. \fIلا تستخدم هذه الميزة الخاطئة في Linux\fP: فهي غير محمولة وغير ضرورية. .SH المعايير لا شيء. .SH التاريخ 4.2BSD، SVr4، SUSv1، POSIX.1\-2001. POSIX.1\-2008 وسمت \fBgetitimer\fP() و \fBsetitimer\fP() كمهملتين، موصية باستخدام واجهة برمجة المؤقتات POSIX (\fBtimer_gettime\fP(2)، \fBtimer_settime\fP(2)، إلخ) بدلاً منهما. POSIX.1\-2024 أزالتهما. .SH ملاحظات لن تنتهي المؤقتات أبداً قبل الوقت المطلوب، لكنها قد تنتهي بعد فترة (قصيرة) لاحقة، والتي تعتمد على دقة مؤقت النظام وعلى حمل النظام؛ انظر \fBtime\fP(7). (لكن انظر الأخطاء أدناه.) إذا انتهى المؤقت بينما العملية نشطة (صحيح دائماً لـ \fBITIMER_VIRTUAL\fP)، فسيتم تسليم الإشارة فوراً عند توليدها. .P الطفل المنشأ عبر \fBfork\fP(2) لا يرث مؤقتات الفاصل الزمني لأبيه. المؤقتات الفاصلة محفوظة عبر \fBexecve\fP(2). .P POSIX.1 يترك التفاعل بين \fBsetitimer\fP() والواجهات الثلاث \fBalarm\fP(2)، \fBsleep\fP(3)، و \fBusleep\fP(3) غير محدد. .SH العلل توليد الإشارة وتسليمها متميزان، وقد تكون نسخة واحدة فقط من كل إشارة من الإشارات المذكورة أعلاه معلقة لعملية. تحت تحميل ثقيل جداً، قد ينتهي مؤقت \fBITIMER_REAL\fP قبل تسليم الإشارة من انتهاء سابق. الإشارة الثانية في مثل هذا الحدث ستُفقد. .P قبل لينكس 2.6.16، قيم المؤقت ممثلة في jiffies. إذا تم تقديم طلب لتعيين مؤقت بقيمة يتجاوز تمثيلها في jiffies \fBMAX_SEC_IN_JIFFIES\fP (المعرف في \fIinclude/linux/jiffies.h\fP)، فسيتم اقتطاع المؤقت بصمت إلى قيمة السقف هذه. على لينكس/i386 (حيث، منذ لينكس 2.6.13، jiffy المبدئي هو 0.004 ثانية)، هذا يعني أن قيمة السقف للمؤقت هي تقريباً 99.42 يوماً. منذ لينكس 2.6.16، تستخدم النواة تمثيلاً داخلياً مختلفاً للأوقات، وتمت إزالة هذا السقف. .P .\" 4 Jul 2005: It looks like this bug may remain in Linux 2.4.x. .\" http://lkml.org/lkml/2005/7/1/165 على أنظمة معينة (بما في ذلك i386)، أنوية لينكس قبل لينكس 2.6.12 تحتوي على خطأ ينتج انتهاءات مؤقت مبكرة تصل إلى jiffy واحد تحت بعض الظروف. هذا الخطأ تم إصلاحه في لينكس 2.6.12. .P .\" Bugzilla report 25 Apr 2006: .\" http://bugzilla.kernel.org/show_bug.cgi?id=6443 .\" "setitimer() should reject noncanonical arguments" POSIX.1\-2001 ينص على أن \fBsetitimer\fP() يجب أن تفشل إذا تم تحديد قيمة \fItv_usec\fP خارج النطاق [0, 999999]. لكن، حتى لينكس 2.6.21 وما يشملها، لينكس لا يعطي خطأ، بل بدلاً من ذلك يضبط بصمت قيمة الثواني المقابلة للمؤقت. من لينكس 2.6.22 فصاعداً، تم إصلاح هذا عدم المطابقة: قيمة \fItv_usec\fP غير صحيحة تؤدي إلى خطأ \fBEINVAL\fP. .SH "انظر أيضًا" \fBgettimeofday\fP(2)، \fBsigaction\fP(2)، \fBsignal\fP(2)، \fBtimer_create\fP(2)، \fBtimerfd_create\fP(2)، \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 .