Ketahui Command Linux - tunggu

Nama

tunggu, waitpid - tunggu proses penamatan

Sinopsis

#include
#include

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

Penerangan

Fungsi menunggu menangguhkan pelaksanaan proses semasa sehingga 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.

Fungsi waitpid menggantung pelaksanaan proses semasa sehingga seorang kanak-kanak seperti yang ditentukan oleh hujah pid telah keluar, atau sehingga isyarat dihantar yang tindakannya untuk menamatkan proses semasa atau memanggil fungsi pengendalian isyarat. Jika seorang kanak-kanak seperti yang diminta oleh pid telah 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.

Nilai pid boleh menjadi salah satu daripada:

<-1

yang bermaksud menunggu apa-apa proses kanak-kanak yang ID kumpulan prosesnya sama dengan nilai mutlak pid .

-1

yang bermaksud menunggu apa-apa proses kanak-kanak; ini adalah tingkah laku yang sama yang menunggu 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 opsyen adalah ATAU daripada 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 bukan NULL , tunggu atau waitpid menyimpan maklumat status di lokasi yang ditunjuk oleh status .

Status ini boleh dinilai dengan makro berikut (makro ini mengambil penyangga stat ( int ) sebagai hujah --- bukan penuding ke penampan!):

WIFEXITED ( status )

adalah tidak sifar jika kanak-kanak keluar dengan normal.

WEXITSTATUS ( status )

menilai ke lapan bits kecil kod balik kanak-kanak yang ditamatkan, yang mungkin telah ditetapkan sebagai hujah panggilan untuk keluar () atau sebagai hujah untuk penyataan kembali dalam program utama. Makro ini hanya boleh dinilai jika WIFEXITED kembali tidak 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 jika WIFSIGNALED kembali tidak sifar.

WIFSTOPPED ( status )

kembali benar jika proses anak yang menyebabkan pulangannya kini dihentikan; ini hanya mungkin jika panggilan itu dilakukan menggunakan WUNTRACED .

WSTOPSIG ( status )

mengembalikan jumlah isyarat yang menyebabkan kanak-kanak itu berhenti. Makro ini hanya boleh dinilai jika WIFSTOPPED kembali tidak sifar.

Sesetengah versi Unix (misalnya Linux, Solaris, tetapi tidak AIX, SunOS) juga menentukan WCOREDUMP ( status ) makro 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 jika WNOHANG digunakan dan tiada kanak-kanak tersedia, atau -1 pada kesilapan (di mana errno ditetapkan kepada 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 hujah pilihan tidak sah.

EINTR

jika WNOHANG tidak ditetapkan dan isyarat yang tidak diblock atau SIGCHLD ditangkap.