.\" -*- coding: UTF-8 -*- .\" Copyright 1993, Thomas Koenig .\" Copyright 2004, Michael Kerrisk .\" 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 wait 2 "8 فبراير 2026" "صفحات دليل لينكس 6.18" .SH الاسم wait، waitpid، waitid \- انتظار تغيير حالة العملية .SH المكتبة مكتبة سي المعيارية (\fIlibc\fP،\ \fI\-lc\fP) .SH موجز .nf \fB#include \fP .P \fBpid_t wait(int *_Nullable \fP\fIwstatus\fP\fB);\fP \fBpid_t waitpid(pid_t \fP\fIpid\fP\fB, int *_Nullable \fP\fIwstatus\fP\fB, int \fP\fIoptions\fP\fB);\fP .P \fBint waitid(idtype_t \fP\fIidtype\fP\fB, id_t \fP\fIid\fP\fB, siginfo_t *\fP\fIinfop\fP\fB, int \fP\fIoptions\fP\fB);\fP /* This is the glibc and POSIX interface; see VERSIONS for information on the raw system call. */ .fi .P .RS -4 متطلبات ماكروات اختبار الميزات لـ glibc (انظر \fBfeature_test_macros\fP(7)): .RE .P \fBwaitid\fP(): .nf .\" (_XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED) Since glibc 2.26: _XOPEN_SOURCE >= 500 || _POSIX_C_SOURCE >= 200809L glibc 2.25 and earlier: _XOPEN_SOURCE || /* Since glibc 2.12: */ _POSIX_C_SOURCE >= 200809L || /* glibc <= 2.19: */ _BSD_SOURCE .fi .SH الوصف تُستخدم كل استدعاءات النظام هذه لانتظار تغيرات الحالة في عملية تابعة لعملية الاستدعاء، والحصول على معلومات حول العملية التابعة التي تغيرت حالتها. يُعتبر تغير الحالة: إنهاء العملية التابعة؛ إيقاف العملية التابعة بواسطة إشارة؛ أو استئناف العملية التابعة بواسطة إشارة. في حالة عملية تابعة منتهية، يسمح إجراء الانتظار للنظام بتحرير الموارد المرتبطة بالعملية التابعة؛ إذا لم يتم إجراء الانتظار، فإن العملية التابعة المنتهية تبقى في حالة "زومبي" (انظر الملاحظات أدناه). .P إذا كانت عملية تابعة قد غيرت حالتها بالفعل، فإن هذه الاستدعاءات تعود فورًا. وإلا، فإنها تمنع التنفيذ حتى تغير عملية تابعة حالتها أو يقاطع معالج إشارة الاستدعاء (بافتراض أن استدعاءات النظام لا يُعاد تشغيلها آليًا باستخدام علم \fBSA_RESTART\fP الخاص بـ \fBsigaction\fP(2)). في بقية هذه الصفحة، يُطلق على العملية التابعة التي تغيرت حالتها ولم يتم انتظارها بعد بواسطة أحد استدعاءات النظام هذه مصطلح \fIقابلة للانتظار\fP \fIwaitable\fP. .SS "wait() و waitpid()" يعلق استدعاء النظام \fBwait\fP() تنفيذ سلسلة التعليمات المستدعية حتى تنتهي إحدى عملياتها التابعة. الاستدعاء \fIwait(&wstatus)\fP مكافئ لـ: .P .in +4n .EX waitpid(\-1, &wstatus, 0); .EE .in .P يعلق استدعاء النظام \fBwaitpid\fP() تنفيذ سلسلة التعليمات المستدعية حتى تغير عملية تابعة محددة بواسطة وسيطة \fIpid\fP حالتها. بشكل مبدئي، ينتظر \fBwaitpid\fP() العمليات التابعة المنتهية فقط، ولكن يمكن تعديل هذا السلوك عبر وسيطة \fIoptions\fP، كما هو موضح أدناه. .P يمكن أن تكون قيمة \fIpid\fP: .TP < \fB\-1\fP بمعنى انتظار أي عملية تابعة يكون معرف مجموعة العمليات الخاص بها مساويًا للقيمة المطلقة لـ \fIpid\fP. .TP \fB\-1\fP بمعنى انتظار أي عملية تابعة. .TP \fB0\fP بمعنى انتظار أي عملية تابعة يكون معرف مجموعة العمليات الخاص بها مساويًا لمعرف مجموعة عمليات عملية الاستدعاء في وقت استدعاء \fBwaitpid\fP(). .TP > \fB0\fP بمعنى انتظار العملية التابعة التي يكون معرف العملية الخاص بها مساويًا لقيمة \fIpid\fP. .P قيمة \fIoptions\fP هي عملية OR لصفر أو أكثر من الثوابت التالية: .TP \fBWNOHANG\fP العودة فورًا إذا لم تخرج أي عملية تابعة. .TP \fBWUNTRACED\fP العودة أيضًا إذا توقفت عملية تابعة (ولكن لم يتم تتبعها عبر \fBptrace\fP(2)). يتم توفير الحالة للعمليات التابعة \fIالمتتبعة\fP التي توقفت حتى إذا لم يتم تحديد هذا الخيار. .TP \fBWCONTINUED\fP (منذ Linux 2.6.10) العودة أيضًا إذا تم استئناف عملية تابعة متوقفة عن طريق تسليم \fBSIGCONT\fP. .P (للخيارات الخاصة بـ Linux فقط، انظر أدناه.) .P إذا لم يكن \fIwstatus\fP NULL، يقوم \fBwait\fP() و \fBwaitpid\fP() بتخزين معلومات الحالة في \fIint\fP الذي يشير إليه. يمكن فحص هذا العدد الصحيح باستخدام وحدات الماكرو التالية (التي تأخذ العدد الصحيح نفسه كوسيطة، وليس مؤشرًا إليه، كما هو الحال في \fBwait\fP() و \fBwaitpid\fP()!): .TP \fBWIFEXITED(\fP\fIwstatus\fP\fB)\fP يعيد true إذا انتهت العملية التابعة بشكل طبيعي، أي عن طريق استدعاء \fBexit\fP(3) أو \fB_exit\fP(2)، أو عن طريق العودة من main(). .TP \fBWEXITSTATUS(\fP\fIwstatus\fP\fB)\fP يعيد حالة الخروج للعملية التابعة. يتكون هذا من أقل 8 بتات دلالة من وسيطة \fIstatus\fP التي حددتها العملية التابعة في استدعاء لـ \fBexit\fP(3) أو \fB_exit\fP(2) أو كوسيطة لعبارة return في main(). يجب استخدام وحدة الماكرو هذه فقط إذا أعادت \fBWIFEXITED\fP قيمة true. .TP \fBWIFSIGNALED(\fP\fIwstatus\fP\fB)\fP ترجع قيمة صحيحة إذا تم إنهاء العملية التابعة بواسطة إشارة. .TP \fBWTERMSIG(\fP\fIwstatus\fP\fB)\fP ترجع رقم الإشارة التي تسببت في إنهاء العملية التابعة. يجب استخدام هذه الكلية فقط إذا أعادت \fBWIFSIGNALED\fP قيمة صحيحة. .TP \fBWCOREDUMP(\fP\fIwstatus\fP\fB)\fP\fI \fP\f[R]// POSIX.1\-2024\fR ترجع قيمة صحيحة إذا أنتجت العملية التابعة تفريغًا أساسيًا (انظر \fBcore\fP(5)). يجب استخدام هذه الكلية فقط إذا أعادت \fBWIFSIGNALED\fP قيمة صحيحة. .TP \fBWIFSTOPPED(\fP\fIwstatus\fP\fB)\fP\fI \fP\f[R]// POSIX.1\-2024\fR ترجع قيمة صحيحة إذا تم إيقاف العملية التابعة بواسطة إشارة؛ هذا ممكن فقط إذا تم الاستدعاء باستخدام \fBWUNTRACED\fP أو عندما تكون التابعة قيد التتبع (انظر \fBptrace\fP(2)). .TP \fBWSTOPSIG(\fP\fIwstatus\fP\fB)\fP ترجع رقم الإشارة التي تسببت في إيقاف التابعة. يجب استخدام هذه الكلية فقط إذا أعادت \fBWIFSTOPPED\fP قيمة صحيحة. .TP \fBWIFCONTINUED(\fP\fIwstatus\fP\fB)\fP (منذ لينكس 2.6.10) ترجع قيمة صحيحة إذا تم استئناف العملية التابعة بواسطة إشارة \fBSIGCONT\fP. .SS waitid() توفّر استدعاء النظام \fBwaitid\fP() (المتوفر منذ لينكس 2.6.9) تحكمًا أكثر دقة في تغييرات حالة التابعة التي تنتظرها. .P تحدد الوسيطتان \fIidtype\fP و \fIid\fP التابعة (أو التوابع) التي تنتظرها، كما يلي: .TP \fIidtype\fP == \f[B]P_PID\fR انتظر التابعة التي يتطابق معرف عمليتها مع \fIid\fP. .TP \fIidtype\fP == \f[B]P_PIDFD\fR (منذ لينكس 5.4) .\" commit 3695eae5fee0605f316fbaad0b9e3de791d7dfaf انتظر التابعة المشار إليها بواصف ملف PID المحدد في \fIid\fP. (انظر \fBpidfd_open\fP(2) لمزيد من المعلومات حول واصفات ملفات PID.) .TP \fIidtype\fP == \f[B]P_PGID\fR .\" commit 821cc7b0b205c0df64cce59aacc330af251fa8f7 انتظر أي تابعة يتطابق معرف مجموعة عمليتها مع \fIid\fP. منذ لينكس 5.4، إذا كان \fIid\fP صفرًا، فانتظر أي تابعة في نفس مجموعة العملية كمجموعة عملية المستدعي وقت الاستدعاء. .TP \fIidtype\fP == \f[B]P_ALL\fR انتظر أي تابعة؛ يتم تجاهل \fIid\fP. .P يتم تحديد تغييرات حالة التابعة التي تنتظرها عن طريق إجراء عملية OR لواحد أو أكثر من الأعلام التالية في \fIoptions\fP: .TP \fBWEXITED\fP انتظر التوابع التي تم إنهاؤها. .TP \fBWSTOPPED\fP انتظر التوابع التي تم إيقافها بواسطة إشارة. .TP \fBWCONTINUED\fP انتظر التوابع (الموقوفة سابقًا) التي تم استئنافها بواسطة إشارة \fBSIGCONT\fP. .P يمكن أيضًا إجراء عملية OR للأعلام التالية في \fIoptions\fP: .TP \fBWNOHANG\fP كما هو الحال مع \fBwaitpid\fP(). .TP \fBWNOWAIT\fP اترك التابعة في حالة قابلة للانتظار؛ يمكن استخدام استدعاء انتظار لاحق لاسترجاع معلومات حالة التابعة مرة أخرى. .P عند الإرجاع الناجح، تملأ \fBwaitid\fP() الحقول التالية من بنية \fIsiginfo_t\fP المشار إليها بواسطة \fIinfop\fP: .TP \fIsi_pid\fP معرف العملية (PID) للطفل. .TP \fIsi_uid\fP معرف المستخدم الحقيقي للطفل. (لا يُضبط هذا الحقل في معظم التطبيقات الأخرى.) .TP \fIsi_signo\fP يُضبط دائمًا على \fBSIGCHLD\fP. .TP \fIsi_status\fP إما حالة الخروج للطفل، كما أعطيت لـ \fB_exit\fP(2) (أو \fBexit\fP(3))، أو الإشارة التي تسببت في إنهاء الطفل أو إيقافه أو استمراره. يمكن استخدام حقل \fIsi_code\fP لتحديد كيفية تفسير هذا الحقل. .TP \fIsi_code\fP يُضبط على واحد من: \fBCLD_EXITED\fP (استدعى الطفل \fB_exit\fP(2))؛ \fBCLD_KILLED\fP (قُتل الطفل بإشارة)؛ \fBCLD_DUMPED\fP (قُتل الطفل بإشارة، وأفرغ النواة)؛ \fBCLD_STOPPED\fP (أُوقف الطفل بإشارة)؛ \fBCLD_TRAPPED\fP (الطفل المتعقب قد حوصر)؛ أو \fBCLD_CONTINUED\fP (استمر الطفل بواسطة \fBSIGCONT\fP). .P إذا تم تحديد \fBWNOHANG\fP في \fIoptions\fP ولم يكن هناك أطفال في حالة قابلة للانتظار، فإن \fBwaitid\fP() تُرجع 0 فورًا وتعتمد حالة بنية \fIsiginfo_t\fP المشار إليها بواسطة \fIinfop\fP على التطبيق. للتمييز (بشكل محمول) بين هذه الحالة والحالة التي كان فيها طفل في حالة قابلة للانتظار، امسح حقل \fIsi_pid\fP قبل الاستدعاء وتحقق من قيمة غير صفرية في هذا الحقل بعد عودة الاستدعاء. .P .\" POSIX.1-2001 leaves this possibility unspecified; most .\" implementations (including Linux) zero out the structure .\" in this case, but at least one implementation (AIX 5.1) .\" does not -- MTK Nov 04 يضيف التصحيح الفني POSIX.1\-2008 رقم 1 (2013) الشرط أنه عند تحديد \fBWNOHANG\fP في \fIoptions\fP ولم يكن هناك أطفال في حالة قابلة للانتظار، يجب على \fBwaitid\fP() مسح حقلي \fIsi_pid\fP و \fIsi_signo\fP من البنية. في لينكس والتطبيقات الأخرى التي تلتزم بهذا الشرط، ليس من الضروري مسح حقل \fIsi_pid\fP قبل استدعاء \fBwaitid\fP(). ومع ذلك، لا تتبع جميع التطبيقات مواصفات POSIX.1 في هذه النقطة. .SH "قيمة الإرجاع" \fBwait\fP(): عند النجاح، تُرجع معرف العملية للطفل المنتهي؛ عند الفشل، تُرجع \-1. .P \fBwaitpid\fP(): عند النجاح، تُرجع معرف العملية للطفل الذي تغيرت حالته؛ إذا تم تحديد \fBWNOHANG\fP وكان طفل أو أكثر محدد بواسطة \fIpid\fP موجودًا، لكنه لم يغير حالته بعد، فتُرجع 0. عند الفشل، تُرجع \-1. .P .\" FIXME As reported by Vegard Nossum, if infop is NULL, then waitid() .\" returns the PID of the child. Either this is a bug, or it is intended .\" behavior that needs to be documented. See my Jan 2009 LKML mail .\" "waitid() return value strangeness when infop is NULL". \fBwaitid\fP(): تُرجع 0 عند النجاح أو إذا تم تحديد \fBWNOHANG\fP ولم يغير أي طفل محدد بواسطة \fIid\fP حالته بعد؛ عند الفشل، تُرجع \-1. .P عند الفشل، يضبط كل من هذه الاستدعاءات \fIerrno\fP للإشارة إلى الخطأ. .SH الأخطاء .TP \fBEAGAIN\fP وصف ملف PID المحدد في \fIid\fP غير محظور والعملية التي يشير إليها لم تنته. .TP \fBECHILD\fP (لـ \fBwait\fP()) لا تحتوي العملية المستدعية على أي أطفال غير منتظرين. .TP \fBECHILD\fP (لـ \fBwaitpid\fP() أو \fBwaitid\fP()) العملية المحددة بواسطة \fIpid\fP (\fBwaitpid\fP()) أو \fIidtype\fP و \fIid\fP (\fBwaitid\fP()) غير موجودة أو ليست ابنة للعملية المستدعية. (يمكن أن يحدث هذا لابنة المرء إذا تم تعيين الإجراء لـ \fBSIGCHLD\fP إلى \fBSIG_IGN\fP. انظر أيضًا قسم \fIملاحظات\ لينكس\fP حول الخيوط.) .TP \fBEINTR\fP لم يُضبط \fBWNOHANG\fP والتقطت إشارة غير محظورة أو \fBSIGCHLD\fP؛ انظر \fBsignal\fP(7). .TP \fBEINVAL\fP وسيطة \fIoptions\fP غير صالحة. .TP \fBESRCH\fP (لـ \fBwait\fP() أو \fBwaitpid\fP()) \fIpid\fP يساوي \fBINT_MIN\fP. .SH الإصدارات .SS "الاختلافات بين مكتبة C والنواة" \fBwait\fP() هي في الواقع دالة مكتبة (في glibc) تُنفذ كاستدعاء لـ \fBwait4\fP(2). .P .\" e.g., i386 has the system call, but not x86-64 في بعض البنى، لا يوجد استدعاء نظام \fBwaitpid\fP()؛ بدلاً من ذلك، تُنفذ هذه الواجهة عبر دالة غلاف لمكتبة C تستدعي \fBwait4\fP(2). .P يأخذ استدعاء النظام الخام \fBwaitid\fP() وسيطة خامسة، من النوع \fIstruct rusage\ *\fP. إذا كانت هذه الوسيطة غير NULL، فتُستخدم لإرجاع معلومات استخدام الموارد عن الولد، بنفس طريقة \fBwait4\fP(2). انظر \fBgetrusage\fP(2) للتفاصيل. .SH المعايير POSIX.1\-2024. .SH التاريخ SVr4، 4.3BSD، POSIX.1\-2001. .SH ملاحظات الولد الذي ينتهي، ولكن لم يُنتظر له، يصبح "زومبي". تحتفظ النواة بمجموعة دنيا من المعلومات حول عملية الزومبي (PID، حالة الإنهاء، معلومات استخدام الموارد) للسماح للأب لاحقًا بإجراء انتظار للحصول على معلومات عن الولد. طالما لم يُزل الزومبي من النظام عبر انتظار، فسيستهلك خانة في جدول عمليات النواة، وإذا امتلأ هذا الجدول، فلن يكون من الممكن إنشاء عمليات أخرى. إذا انتهت عملية أب، فإن أولادها "الزومبي" (إن وجدوا) يُتبنون بواسطة \fBinit\fP(1)، (أو بواسطة أقرب عملية "subreaper" كما هو محدد باستخدام عملية \fBprctl\fP(2) \fBPR_SET_CHILD_SUBREAPER\fP)؛ ينفذ \fBinit\fP(1) آليًا انتظارًا لإزالة الزومبي. .P تحدد POSIX.1\-2001 أنه إذا ضُبط تصرف \fBSIGCHLD\fP على \fBSIG_IGN\fP أو ضُبط العلم \fBSA_NOCLDWAIT\fP لـ \fBSIGCHLD\fP (انظر \fBsigaction\fP(2))، فإن الأولاد الذين ينتهون لا يصبحون زومبي وسيحظر استدعاء \fBwait\fP() أو \fBwaitpid\fP() حتى ينتهي جميع الأولاد، ثم يفشل مع ضبط \fIerrno\fP على \fBECHILD\fP. (ترك معيار POSIX الأصلي سلوك ضبط \fBSIGCHLD\fP على \fBSIG_IGN\fP غير محدد. لاحظ أنه على الرغم من أن التصرف المبدئي لـ \fBSIGCHLD\fP هو "تجاهل"، فإن ضبط التصرف صراحةً على \fBSIG_IGN\fP يؤدي إلى معالجة مختلفة لأولاد عملية الزومبي.) .P يتوافق لينكس 2.6 مع متطلبات POSIX. ومع ذلك، لا يفعل لينكس 2.4 (والإصدارات الأقدم) ذلك: إذا أُجري استدعاء \fBwait\fP() أو \fBwaitpid\fP() أثناء تجاهل \fBSIGCHLD\fP، يتصرف الاستدعاء تمامًا كما لو لم يُتجاهل \fBSIGCHLD\fP، أي أن الاستدعاء يحظر حتى ينتهي الولد التالي ثم يُرجع معرف العملية وحالة ذلك الولد. .SS "ملاحظات لينكس" في نواة لينكس، الخيط المجدول بواسطة النواة ليس بناءً متميزًا عن العملية. بدلاً من ذلك، الخيط هو ببساطة عملية تُنشأ باستخدام استدعاء النظام الفريد للينكس \fBclone\fP(2)؛ تُنفذ الإجراءات الأخرى مثل الاستدعاء المحمول \fBpthread_create\fP(3) باستخدام \fBclone\fP(2). قبل لينكس 2.4، كان الخيط مجرد حالة خاصة من العملية، وكنتيجة لذلك، لم يستطع خيط واحد الانتظار على أولاد خيط آخر، حتى عندما ينتمي الأخير إلى نفس مجموعة الخيوط. ومع ذلك، يصف POSIX هذه الوظيفة، ومنذ لينكس 2.4 يمكن للخيط، وسينتظر مبدئيًا، على أولاد خيوط أخرى في نفس مجموعة الخيوط. .P .\" commit 91c4e8ea8f05916df0c8a6f383508ac7c9e10dba \fIoptions\fP التالية الخاصة بلينكس مخصصة للاستخدام مع الأولاد المنشئين باستخدام \fBclone\fP(2)؛ يمكن أيضًا، منذ لينكس 4.7، استخدامها مع \fBwaitid\fP(): .TP \fB__WCLONE\fP .\" since 0.99pl10 انتظر أولاد "clone" فقط. إذا حُذف، فانتظر أولاد "non\-clone" فقط. (الولد "clone" هو الذي لا يُسلم إشارة، أو إشارة غير \fBSIGCHLD\fP إلى والده عند الإنهاء.) يُتجاهل هذا الخيار إذا حُدد \fB__WALL\fP أيضًا. .TP \fB__WALL\fP (منذ لينكس 2.4) .\" since patch-2.3.48 انتظر جميع العمليات الابنة، بغض النظر عن النوع (مستنسخة أو غير مستنسخة). .TP \fB__WNOTHREAD\fP (منذ لينكس 2.4) .\" since patch-2.4.0-test8 لا تنتظر عمليات ابنة لخيوط أخرى في نفس مجموعة الخيوط. كان هذا هو المبدئي قبل لينكس 2.4. .P .\" commit bf959931ddb88c4e4366e96dd22e68fa0db9527c .\" prevents cases where an unreapable zombie is created if .\" /sbin/init doesn't use __WALL. منذ لينكس 4.7، يُفترض آليًا العلم \fB__WALL\fP إذا كانت العملية الابنة قيد التتبع (ptraced). .SH العلل وفقًا لـ POSIX.1\-2008، يجب على التطبيق الذي يستدعي \fBwaitid\fP() التأكد من أن \fIinfop\fP يشير إلى بنية \fIsiginfo_t\fP (أي أنه مؤشر غير فارغ). على لينكس، إذا كان \fIinfop\fP فارغًا (NULL)، فإن \fBwaitid\fP() ينجح ويعيد معرف العملية للعملية الابنة المنتظرة. يجب على التطبيقات تجنب الاعتماد على هذه الميزة غير المتسقة وغير القياسية وغير الضرورية. .SH أمثلة .\" fork.2 refers to this example program. يوضح البرنامج التالي استخدام \fBfork\fP(2) و \fBwaitpid\fP(). ينشئ البرنامج عملية ابنة. إذا لم يُوفر وسيط سطر أوامر للبرنامج، فإن العملية الابنة تعلق تنفيذها باستخدام \fBpause\fP(2)، للسماح للمستخدم بإرسال إشارات إلى الابنة. خلاف ذلك، إذا وُفر وسيط سطر أوامر، فإن العملية الابنة تخرج فورًا، باستخدام العدد الصحيح المقدم في سطر الأوامر كحالة خروج. تنفذ العملية الأم حلقة تراقب الابنة باستخدام \fBwaitpid\fP()، وتستخدم وحدات الماكرو W*() الموصوفة أعلاه لتحليل قيمة حالة الانتظار. .P توضح جلسة الشل التالية استخدام البرنامج: .P .in +4n .EX $\fB ./a.out &\fP Child PID is 32360 [1] 32359 $\fB kill \-STOP 32360\fP stopped by signal 19 $\fB kill \-CONT 32360\fP continued $\fB kill \-TERM 32360\fP killed by signal 15 [1]+ Done ./a.out $ .EE .in .SS "مصدر البرنامج" .\" SRC BEGIN (wait.c) \& .EX #include #include #include #include #include #include \& int main(int argc, char *argv[]) { int wstatus; pid_t cpid, w; \& cpid = fork(); if (cpid == \-1) { perror("fork"); exit(EXIT_FAILURE); } \& if (cpid == 0) { /* Code executed by child */ printf("Child PID is %jd\[rs]n", (intmax_t) getpid()); if (argc == 1) pause(); /* Wait for signals */ _exit(atoi(argv[1])); \& } else { /* Code executed by parent */ do { w = waitpid(cpid, &wstatus, WUNTRACED | WCONTINUED); if (w == \-1) { perror("waitpid"); exit(EXIT_FAILURE); } \& if (WIFEXITED(wstatus)) { printf("exited, status=%d\[rs]n", WEXITSTATUS(wstatus)); } else if (WIFSIGNALED(wstatus)) { printf("killed by signal %d\[rs]n", WTERMSIG(wstatus)); } else if (WIFSTOPPED(wstatus)) { printf("stopped by signal %d\[rs]n", WSTOPSIG(wstatus)); } else if (WIFCONTINUED(wstatus)) { printf("continued\[rs]n"); } } while (!WIFEXITED(wstatus) && !WIFSIGNALED(wstatus)); exit(EXIT_SUCCESS); } } .EE .\" SRC END .SH "انظر أيضًا" \fB_exit\fP(2), \fBclone\fP(2), \fBfork\fP(2), \fBkill\fP(2), \fBptrace\fP(2), \fBsigaction\fP(2), \fBsignal\fP(2), \fBwait4\fP(2), \fBpthread_create\fP(3), \fBcore\fP(5), \fBcredentials\fP(7), \fBsignal\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 .