ชื่อ
รอ waitpid - รอการสิ้นสุดของกระบวนการ
สรุป
#include pid_t รอ (int * สถานะ );pid_t waitpid (pid_t pid , int * สถานะ , int ตัวเลือก );
รอ หยุดการทำงานของกระบวนการปัจจุบันจนกว่าเด็กจะได้ออกหรือจนกว่าจะมีการส่งสัญญาณที่มีการดำเนินการเพื่อยุติกระบวนการปัจจุบันหรือเรียกฟังก์ชันจัดการสัญญาณ ถ้าเด็กได้ออกไปแล้วตามเวลาของการโทร (เรียกว่ากระบวนการ "ผีดิบ") ฟังก์ชันจะส่งกลับทันที ทรัพยากรระบบใด ๆ ที่เด็กใช้จะได้รับการปลดปล่อย waitpid หยุดการทำงานของกระบวนการปัจจุบันจนกว่าเด็กที่ระบุโดย pid อาร์กิวเมนต์ได้ออกหรือจนกว่าจะมีการส่งสัญญาณที่มีการดำเนินการเพื่อยุติกระบวนการปัจจุบันหรือเรียกฟังก์ชันจัดการสัญญาณ หากเด็กร้องขอตาม pid (เรียกว่ากระบวนการ "zombie") ฟังก์ชันจะส่งกลับทันที ทรัพยากรระบบใด ๆ ที่เด็กใช้จะได้รับการปลดปล่อย คุณค่าของ pid สามารถเป็นหนึ่งใน: < -1 ซึ่งหมายถึงการรอกระบวนการเด็กที่มี ID กลุ่มกระบวนการเท่ากับค่าสัมบูรณ์ของ pid . -1 ซึ่งหมายถึงการรอคอยกระบวนการลูก ๆ นี้เป็นพฤติกรรมเดียวกันที่รอ การจัดแสดงนิทรรศการ 0 ซึ่งหมายถึงการรอกระบวนการเด็กที่มี ID กลุ่มกระบวนการเท่ากับกระบวนการโทร > 0 ซึ่งหมายถึงการรอให้เด็กที่ ID กระบวนการเท่ากับค่าของ pid . คุณค่าของ ตัวเลือก เป็นค่าคงที่หรือมากกว่าหรือเท่ากับค่าคงที่ต่อไปนี้ WNOHANG ซึ่งหมายความว่าจะกลับทันทีหากไม่มีเด็กออก WUNTRACED ซึ่งหมายถึงการกลับมาให้ลูกที่หยุดทำงานและยังไม่มีรายงานสถานะ (สำหรับตัวเลือกลีนุกซ์เท่านั้นโปรดดูด้านล่าง) ถ้า สถานะ ไม่ใช่โมฆะ, รอ หรือwaitpid เก็บข้อมูลสถานะในตำแหน่งที่ชี้ไปที่ สถานะ . สถานะนี้สามารถได้รับการประเมินด้วยมาโครต่อไปนี้ (มาโครเหล่านี้ใช้บัฟเฟอร์สถิติ (aint) เป็นอาร์กิวเมนต์ --- ไม่ใช่ตัวชี้ไปยังบัฟเฟอร์!): WIFEXITED ( สถานะ ) ไม่ใช่ศูนย์หากเด็กออกจากปกติ WEXITSTATUS ( สถานะ ) ประเมินอย่างน้อยอย่างมีนัยสำคัญแปดบิตของรหัสที่ส่งกลับของเด็กที่ถูกยกเลิกซึ่งอาจได้รับการตั้งค่าเป็นอาร์กิวเมนต์การโทรไปออก () หรือเป็นอาร์กิวเมนต์สำหรับ a กลับ ในโปรแกรมหลัก แมโครนี้สามารถประเมินได้ถ้าWIFEXITEDกลับไม่ใช่ศูนย์ WIFSIGNALED ( สถานะ ) ส่งกลับค่าจริงถ้ากระบวนการเด็กออกเนื่องจากมีสัญญาณซึ่งไม่ได้ถูกจับ WTERMSIG ( สถานะ ) ส่งกลับจำนวนของสัญญาณที่ทำให้กระบวนการย่อยถูกยกเลิก แมโครนี้สามารถประเมินได้ถ้าWIFSIGNALED กลับไม่ใช่ศูนย์ WIFSTOPPED ( สถานะ ) ส่งกลับค่าจริงถ้ากระบวนการลูกซึ่งก่อให้เกิดผลตอบแทนถูกระงับไว้ในขณะนี้ นี้เป็นไปได้เฉพาะเมื่อมีการเรียกใช้WUNTRACED. WSTOPSIG ( สถานะ ) ส่งกลับจำนวนของสัญญาณที่ทำให้เด็กหยุด แมโครนี้สามารถประเมินได้ถ้าWIFSTOPPED กลับไม่ใช่ศูนย์ บางรุ่นของ Unix (เช่น Linux, Solaris แต่ไม่ใช่ AIX, SunOS) ยังกำหนดมาโครWCOREDUMP ( สถานะ ) เพื่อทดสอบว่ากระบวนการลูกทิ้งฐานหรือไม่ ใช้เฉพาะไฟล์นี้ใน #ifdef WCOREDUMP … #endif รหัสกระบวนการของเด็กที่ออกหรือศูนย์ถ้าWNOHANG ถูกใช้และไม่มีเด็กที่มีหรือ -1 เมื่อเกิดข้อผิดพลาด (ในกรณีนี้ errno ตั้งค่าเป็นค่าที่เหมาะสม) ECHILD ถ้ากระบวนการที่ระบุไว้ใน pid ไม่มีหรือไม่ใช่บุตรของกระบวนการเรียก (กรณีนี้สามารถเกิดขึ้นได้กับลูกของตัวเองถ้าการกระทำของ SIGCHLD ได้รับการตั้งค่าเป็น SIG_IGN โปรดดูหัวข้อ LINUX NOTES เกี่ยวกับหัวข้อ) EINVAL ถ้า ตัวเลือก อาร์กิวเมนต์ไม่ถูกต้อง EINTR ถ้าWNOHANG ไม่ได้ตั้งค่าและไม่มีการปิดกั้นสัญญาณหรือSIGCHLD ถูกจับ. ลักษณะ
มูลค่าย้อนกลับ
ข้อผิดพลาด




