Skip to main content

Tunggu - Command Linux - Unix Command

Perintah Linux dasar untuk pemula (Jun 2026)

Perintah Linux dasar untuk pemula (Jun 2026)
Anonim

Nama

tunggu, waitpid - tunggu proses penamatan

Sinopsis

#include #include

pid_t tunggu (int * status );pid_t waitpid (pid_t pid , int * status , int pilihan );

Penerangan

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.

Nilai Pulangan

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).

Kesilapan

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.