Skip to main content

انتظر - قيادة لينكس - قيادة يونيكس

نجحت الخطة (يوليو 2026)

نجحت الخطة (يوليو 2026)
Anonim

اسم

انتظر ، انتظر - انتظر إنهاء العملية

ملخص

#تتضمن #تتضمن

pid_t انتظر (الباحث * الحالة );pid_t waitpid (pid_t معرف المنتج ، int * الحالة ، خيارات );

وصف

الانتظر تقوم الوظيفة بإيقاف تنفيذ العملية الحالية إلى أن يخرج الطفل ، أو حتى يتم تسليم إشارة يكون أفعاله هو إنهاء العملية الحالية أو استدعاء وظيفة التعامل مع الإشارة. إذا كان الطفل قد خرج بالفعل قبل وقت المكالمة (ما يسمى عملية "zombie") ، ستعود الدالة على الفور. يتم تحرير أي موارد النظام المستخدمة من قبل الطفل.

الwaitpid وظيفة توقف تنفيذ العملية الحالية حتى الطفل كما هو محدد من قبل معرف المنتج خرجت الوسيطة ، أو حتى يتم تسليم إشارة التي يكون عملها هو إنهاء العملية الحالية أو استدعاء وظيفة التعامل مع الإشارة. إذا كان الطفل على النحو المطلوب من قبل معرف المنتج قد خرجت بالفعل من وقت الدعوة (ما يسمى عملية "زومبي") ، تعود الدالة على الفور. يتم تحرير أي موارد النظام المستخدمة من قبل الطفل.

قيمة ال معرف المنتج يمكن أن يكون واحدًا من:

< -1

مما يعني الانتظار لأي عملية تابعة تكون معرف مجموعة العمليات الخاصة بها مساوية للقيمة المطلقة لـ معرف المنتج .

-1

مما يعني الانتظار لأي عملية طفل ؛ هذا هو نفس السلوك الذيانتظر المعارض.

0

مما يعني انتظار أي عملية تابعة تكون معرف مجموعة العمليات مساوٍ لهوية عملية الاستدعاء.

> 0

مما يعني أن تنتظر الطفل الذي يساوي معرف العملية الخاصة به قيمة معرف المنتج .

قيمة ال خيارات هو OR من صفر أو أكثر من الثوابت التالية:

WNOHANG

مما يعني العودة فورًا إذا لم يخرج أي طفل.

WUNTRACED

وهو ما يعني أيضًا العودة للأطفال الذين يتم إيقافهم والذين لم يتم الإبلاغ عن وضعهم.

(للاطلاع على خيارات Linux-only ، انظر أدناه.)

إذا الحالة ليسلا شيء, انتظر أوwaitpid معلومات حالة المتجر في الموقع المشار إليه بواسطة الحالة .

يمكن تقييم هذه الحالة مع وحدات الماكرو التالية (تأخذ هذه وحدات الماكرو المخزن المؤقت الأساسي (الباحث) كحجة --- لا مؤشر إلى المخزن المؤقت!):

WIFEXITED ( الحالة )

غير صفرية إذا خرج الطفل بشكل طبيعي.

WEXITSTATUS ( الحالة )

يتم تقييمه إلى أقل ثماني بتات من شفرة إرجاع الطفل التي تم إنهاؤها ، والتي قد تم تعيينها كحجة لإجراء مكالمة إلىىخرج() أو كحجة ل إرجاع بيان في البرنامج الرئيسي. يمكن تقييم هذا الماكرو فقط إذاWIFEXITEDعاد غير الصفر.

WIFSIGNALED ( الحالة )

يعود الحقيقي إذا خرجت عملية الطفل بسبب إشارة التي لم يتم القبض عليه.

WTERMSIG ( الحالة )

يعيد رقم الإشارة التي تسببت في إنهاء عملية الطفل. يمكن تقييم هذا الماكرو فقط إذاWIFSIGNALED عاد غير الصفر.

WIFSTOPPED ( الحالة )

يعود الحقيقي إذا تم إيقاف عملية الطفل الذي تسبب في العودة حاليا ؛ هذا ممكن فقط إذا تم إجراء المكالمة باستخدامWUNTRACED.

WSTOPSIG ( الحالة )

يعيد رقم الإشارة التي تسببت في توقف الطفل. يمكن تقييم هذا الماكرو فقط إذاWIFSTOPPED عاد غير الصفر.

بعض إصدارات Unix (مثل Linux و Solaris ولكن ليس AIX و SunOS) تحدد أيضًا الماكروWCOREDUMP ( الحالة ) لاختبار ما إذا كانت عملية الطفل الأساسية ملقاة. استخدم هذا فقط في #ifdef WCOREDUMP … #endif.

قيمة الإرجاع

معرف العملية للطفل الذي خرج ، أو صفر إذاWNOHANG تم استخدام وليس هناك طفل متاح ، أو -1 على خطأ (في هذه الحالة errno تم ضبطه على قيمة مناسبة).

أخطاء

ECHILD

إذا كانت العملية المحددة في معرف المنتج غير موجود أو ليس طفلاً لعملية الاستدعاء. (يمكن أن يحدث هذا للطفل الخاص إذا تم تعيين الإجراء الخاص بـ SIGCHLD على SIG_IGN. راجع أيضًا قسم LINUX NOTES حول مؤشرات الترابط.)

EINVAL

إذا كان خيارات الحجة غير صالحة.

EINTR

إذاWNOHANG لم يتم تعيين وإشارة غير محظورة أوSIGCHLD قبض عليه.