Nama
tunggu, waitpid - tunggu proses penamatan
Sinopsis
#include pid_t tunggu (int * status );pid_t waitpid (pid_t pid , int * status , int pilihan );
Thetunggu fungsi menangguhkan pelaksanaan proses semasa sehingga seorang kanak-kanak keluar, atau sehingga isyarat dihantar yang tindakannya untuk menamatkan proses semasa atau memanggil fungsi pengendalian isyarat. Jika kanak-kanak sudah keluar dari masa panggilan (yang dipanggil "zombie" proses), fungsi itu akan kembali dengan serta-merta. Mana-mana sumber sistem yang digunakan oleh kanak-kanak dibebaskan. Thewaitpid fungsi menangguhkan pelaksanaan proses semasa sehingga kanak-kanak seperti yang ditentukan oleh pid hujah telah keluar, atau sehingga isyarat dihantar yang tindakannya untuk menamatkan proses semasa atau memanggil fungsi pengendalian isyarat. Jika kanak-kanak seperti yang diminta oleh pid telah keluar dari masa panggilan (yang dipanggil "zombie" proses), fungsi itu kembali dengan serta-merta. Mana-mana sumber sistem yang digunakan oleh kanak-kanak dibebaskan. Nilai pid boleh menjadi salah satu daripada: < -1 yang bermaksud untuk menunggu sebarang proses anak yang ID kumpulan prosesnya sama dengan nilai mutlak pid . -1 yang bermaksud menunggu apa-apa proses kanak-kanak; ini adalah tingkah laku yang samatunggu pameran. 0 yang bermaksud menunggu apa-apa proses kanak-kanak yang ID kumpulan prosesnya sama dengan proses pemanggilan. > 0 yang bermaksud menunggu anak yang ID prosesnya sama dengan nilai pid . Nilai pilihan adalah OR dari sifar atau lebih daripada pemalar berikut: WNOHANG yang bermaksud untuk kembali segera jika tiada anak yang keluar. WUNTRACED yang bermaksud untuk kembali kepada kanak-kanak yang dihentikan, dan statusnya belum dilaporkan. (Untuk pilihan Linux sahaja, lihat di bawah.) Jika status tidakNULL, tunggu atauwaitpid menyimpan maklumat status di lokasi yang ditunjuk oleh status . Status ini boleh dinilai dengan makro berikut (makro ini mengambil buffer stat (aint) sebagai hujah --- bukan penunjuk kepada penampan!): WIFEXITED ( status ) adalah tidak sifar jika kanak-kanak keluar dengan normal. WEXITSTATUS ( status ) menilai lapan bits yang ketara bagi kod balik kanak-kanak yang ditamatkan, yang mungkin telah ditetapkan sebagai hujah kepada panggilan untukkeluar () atau sebagai hujah untuk a kembali pernyataan dalam program utama. Makro ini hanya boleh dinilai jikaWIFEXITEDkembali bukan-sifar. WIFSIGNALED ( status ) kembali benar jika proses anak keluar karena isyarat yang tidak ditangkap. WTERMSIG ( status ) mengembalikan jumlah isyarat yang menyebabkan proses anak itu tamat. Makro ini hanya boleh dinilai jikaWIFSIGNALED kembali bukan-sifar. WIFSTOPPED ( status ) kembali benar jika proses anak yang menyebabkan pulangannya kini dihentikan; ini hanya mungkin jika panggilan telah dilakukan menggunakanWUNTRACED. WSTOPSIG ( status ) mengembalikan jumlah isyarat yang menyebabkan kanak-kanak itu berhenti. Makro ini hanya boleh dinilai jikaWIFSTOPPED kembali bukan-sifar. Beberapa versi Unix (mis. Linux, Solaris, tetapi tidak AIX, SunOS) juga menentukan makroWCOREDUMP ( status ) untuk menguji sama ada proses kanak-kanak membuang teras. Hanya gunakan ini yang dilampirkan di #ifdef WCOREDUMP … #endif. ID proses kanak-kanak yang keluar, atau sifar jikaWNOHANG telah digunakan dan tiada kanak-kanak yang ada, atau -1 atas kesilapan (dalam kes itu errno ditetapkan pada nilai yang sesuai). ECHILD jika proses yang dinyatakan dalam pid tidak wujud atau bukan anak proses pemanggilan. (Ini boleh berlaku untuk anak sendiri jika tindakan untuk SIGCHLD ditetapkan kepada SIG_IGN. Lihat juga bahagian LINUX NOTES mengenai benang.) EINVAL jika pilihan hujah tidak sah. EINTR jikaWNOHANG tidak ditetapkan dan isyarat tak ditutup atau aSIGCHLD ditangkap. Penerangan
Nilai Pulangan
Kesilapan




