Diajar dina Komando Linux Ubuntu - antosan

nami

antosan, waitpid - ngadagoan prosés terminasi

Synopsis

#include
#include

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

gambaran

Fungsi nungguan suspends palaksanaan tina prosés ayeuna dugi anak geus kaluar, atanapi dugi sinyal geus dikirimkeun anu Peta nyaéta pikeun nungtungan proses ayeuna atawa nelepon hiji fungsi penanganan sinyal. Mun anak geus exited ku waktu tina panggero (a disebut "zombie" proses), fungsi nu mulih langsung. Sagala sumber Sistim dipake ku anak téh dibébaskeun.

Fungsi waitpid suspends palaksanaan tina prosés ayeuna dugi anak sakumaha dieusian ku argumen pid geus kaluar, atanapi dugi sinyal geus dikirimkeun anu Peta nyaéta pikeun nungtungan proses ayeuna atawa nelepon hiji fungsi penanganan sinyal. Mun anak sakumaha dipénta ku pid geus exited ku waktu tina panggero (a disebut "zombie" proses), fungsi nu mulih langsung. Sagala sumber Sistim dipake ku anak téh dibébaskeun.

Nilai pid bisa dijadikeun salah sahiji:

<-1

nu hartina ngadagoan wae prosés anak anu prosés group ID sarua jeung nilai mutlak pid.

-1

nu hartina ngadagoan wae prosés anak; ieu téh laku nu sami nu antosan némbongkeun.

0

nu hartina ngadagoan wae prosés anak anu prosés group ID sarua jeung nu ti prosés nélépon.

> 0

nu hartina ngadagoan anak anu prosés ID sarua jeung nilai pid.

Nilai pilihan mangrupa OR nol atawa leuwih tina konstanta handap:

WNOHANG

nu hartina balik geuwat lamun euweuh anak geus kaluar.

WUNTRACED

nu hartina ogé balik pikeun barudak nu dieureunkeun, sarta anu status teu acan dilaporkeun.

(Pikeun Linux Ubuntu-hijina pilihan, tingali di handap.)

Lamun status teu hypothesis, antosan atawa informasi status toko waitpid di lokasi nunjuk kana ku status.

Status Ieu bisa dievaluasi ku macros handap (macros ieu nyokot stat panyangga (hiji int) salaku hiji argumen --- lain pointer kana panyangga anu!):

WIFEXITED (status)

mangrupa non-enol lamun anak exited normal.

WEXITSTATUS (status)

ngaevaluasi kana sahanteuna signifikan dalapan bit sahiji kode balikna anak nu terminated, nu mungkin geus diatur sakumaha argumen pikeun panggero ka LN () atawa salaku argumen pikeun pernyataan balik dina program utama. Macro Ieu ngan bisa dievaluasi lamun WIFEXITED balik non-nol.

WIFSIGNALED (status)

mulih leres lamun proses anak exited kusabab sinyal nu teu bray.

WTERMSIG (status)

mulih jumlah sinyal nu ngabalukarkeun proses anak ka nungtungan. Macro Ieu ngan bisa dievaluasi lamun WIFSIGNALED balik non-nol.

WIFSTOPPED (status)

mulih leres lamun proses anak nu disababkeun mulang ayeuna dieureunkeun; ieu téh ngan mungkin lamun keur nélépon ieu dipigawé maké WUNTRACED.

WSTOPSIG (status)

mulih jumlah sinyal nu disababkeun anak ka eureun. Macro Ieu ngan bisa dievaluasi lamun WIFSTOPPED balik non-nol.

Sababaraha versi tina Unix (misalna Linux Ubuntu, Solaris, tapi teu AIX, SunOS) ogé nangtukeun hiji WCOREDUMP makro (status) pikeun nguji naha prosés anak nu kasusun loba di inti. Ngan make ieu enclosed di #ifdef WCOREDUMP ... #endif.

balik deui Niley

Prosés ID anak nu kaluar, atawa enol lamun WNOHANG ieu dipaké tur euweuh anak éta sadia, atawa -1 on kasalahan (nu hal errno disetel ka hiji nilai luyu).

kasalahan

ECHILD

lamun prosesna dieusian di pid teu aya atanapi teu anak tina prosés nélépon. (Ieu bisa lumangsung pikeun anak salah urang sorangan lamun peta pikeun SIGCHLD disetel ka SIG_IGN. Tempo oge LINUX Catetan bagian ngeunaan threads.)

EINVAL

lamun éta pilihan argumen éta sah.

EINTR

lamun WNOHANG teu diatur jeung sinyal unblocked atanapi SIGCHLD a ieu bray.