Pelajari Perintah Linux - tunggu

Nama

tunggu, tunggu - tunggu proses penghentian

Ringkasan

#include
#include

pid_t menunggu ( status int * );
pid_t waitpid (pid_t pid , int * status , int option );

Deskripsi

Fungsi menunggu menunda pelaksanaan proses saat ini sampai seorang anak keluar, atau sampai sinyal disampaikan yang beraksi untuk menghentikan proses saat ini atau memanggil fungsi penanganan sinyal. Jika seorang anak sudah keluar pada saat panggilan (apa yang disebut proses "zombie"), fungsi segera kembali. Sumber daya sistem apa pun yang digunakan oleh anak dibebaskan.

Fungsi waitpid menangguhkan eksekusi proses saat ini sampai anak seperti yang ditentukan oleh argumen pid telah keluar, atau sampai sinyal disampaikan yang beraksi untuk mengakhiri proses saat ini atau untuk memanggil fungsi penanganan sinyal. Jika seorang anak seperti yang diminta oleh pid telah keluar pada saat panggilan (apa yang disebut proses "zombie"), fungsi segera kembali. Sumber daya sistem apa pun yang digunakan oleh anak dibebaskan.

Nilai pid bisa menjadi salah satu dari:

<-1

yang berarti menunggu proses anak yang ID grup prosesnya sama dengan nilai mutlak pid .

-1

yang berarti menunggu proses anak; ini adalah perilaku yang sama yang menunggu pameran.

0

yang berarti menunggu proses setiap anak yang ID grup prosesnya sama dengan proses panggilan.

> 0

yang berarti menunggu anak yang ID prosesnya sama dengan nilai pid .

Nilai opsi adalah ATAU nol atau lebih dari konstanta berikut:

WNOHANG

yang berarti segera kembali jika tidak ada anak yang keluar.

TERJANGKAU

yang berarti juga mengembalikan untuk anak-anak yang berhenti, dan yang statusnya belum dilaporkan.

(Untuk opsi Linux saja, lihat di bawah.)

Jika status tidak NULL , tunggu atau waitpid menyimpan informasi status di lokasi yang ditunjukkan oleh status .

Status ini dapat dievaluasi dengan makro berikut (makro ini mengambil penyangga stat (sebuah int ) sebagai argumen --- bukan penunjuk ke buffer!):

WIFEXITED ( status )

tidak nol jika anak keluar secara normal.

WEXITSTATUS ( status )

mengevaluasi ke paling sedikit delapan bit kode kembalinya anak yang diakhiri, yang mungkin telah ditetapkan sebagai argumen ke panggilan untuk keluar () atau sebagai argumen untuk pernyataan kembali dalam program utama. Makro ini hanya dapat dievaluasi jika WIFEXITED mengembalikan bukan nol.

WIFSIGNALED ( status )

mengembalikan nilai true jika proses anak keluar karena sinyal yang tidak tertangkap.

WTERMSIG ( status )

mengembalikan jumlah sinyal yang menyebabkan proses anak berhenti. Makro ini hanya dapat dievaluasi jika WIFSIGNALED kembali bukan nol.

WIFSTOPPED ( status )

mengembalikan nilai true jika proses anak yang menyebabkan pengembalian saat ini dihentikan; ini hanya mungkin jika panggilan dilakukan menggunakan WUNTRACED .

WSTOPSIG ( status )

mengembalikan jumlah sinyal yang menyebabkan si anak berhenti. Makro ini hanya dapat dievaluasi jika WIFSTOPPED kembali bukan nol.

Beberapa versi Unix (misalnya Linux, Solaris, tetapi tidak AIX, SunOS) juga mendefinisikan WC WCEDUMP ( status ) untuk menguji apakah proses anak membuang inti. Hanya gunakan ini tertutup di #ifdef WCOREDUMP ... #endif.

Nilai Pengembalian

ID proses dari anak yang keluar, atau nol jika WNOHANG digunakan dan tidak ada anak yang tersedia, atau -1 pada kesalahan (dalam hal ini errno diatur ke nilai yang sesuai).

Kesalahan

ECHILD

jika proses yang ditentukan dalam pid tidak ada atau bukan anak dari proses panggilan. (Ini bisa terjadi untuk anak sendiri jika tindakan untuk SIGCHLD diatur ke SIG_IGN. Lihat juga bagian LINUX CATATAN tentang utas.)

EINVAL

jika argumen opsi tidak valid.

EINTR

jika WNOHANG tidak diatur dan sinyal yang tidak diblokir atau SIGCHLD tertangkap.