Alamin ang Linux Command - maghintay

Pangalan

maghintay, maghintay - hintayin ang pagwawakas ng proseso

Buod

# isama ang
# isama ang

pid_t maghintay (int * katayuan );
pid_t waitpid (pid_t pid , int * status , int options );

Paglalarawan

Ang pag-andar ng paghihintay ay nagsususpindi sa pagpapatupad ng kasalukuyang proseso hanggang lumabas ang isang bata, o hanggang ang isang senyas ay naihatid na ang pagkilos ay upang wakasan ang kasalukuyang proseso o tumawag sa isang function na paghawak ng signal. Kung ang isang bata ay lumabas na sa oras ng tawag (isang tinatawag na "sombi" na proseso), ang function ay agad na nagbabalik. Ang anumang mga mapagkukunang sistema na ginagamit ng bata ay napalaya.

Ang pag-andar ng waitpid ay nagsususpindi sa pagpapatupad ng kasalukuyang proseso hanggang sa ang isang bata na tinukoy ng pid argument ay lumabas, o hanggang ang isang senyas ay naihatid na ang pagkilos ay upang wakasan ang kasalukuyang proseso o tumawag sa isang function na paghawak ng signal. Kung ang isang bata na hiniling ng pid ay lumabas na sa oras ng tawag (isang tinatawag na "zombie" na proseso), agad na bumalik ang function. Ang anumang mga mapagkukunang sistema na ginagamit ng bata ay napalaya.

Ang halaga ng pid ay maaaring isa sa:

<-1

na nangangahulugang maghintay para sa anumang proseso ng bata na ang proseso ng grupong ID ay katumbas ng ganap na halaga ng pid .

-1

na nangangahulugang maghintay para sa anumang proseso ng bata; ito ay ang parehong pag-uugali na naghihintay exhibits.

0

na nangangahulugang maghintay para sa anumang proseso ng bata na ang proseso ng grupong ID ay katumbas ng proseso ng pagtawag.

> 0

na nangangahulugang maghintay para sa bata na ang proseso ng ID ay katumbas ng halaga ng pid .

Ang halaga ng mga pagpipilian ay isang OR ng zero o higit pa sa mga sumusunod na mga constants:

WNOHANG

na nangangahulugang bumalik agad kung walang anak na lumabas.

WUNTRACED

na nangangahulugang bumalik din para sa mga bata na kung saan ay tumigil, at ang katayuan ay hindi naiulat.

(Para sa mga opsyon sa Linux lamang, tingnan sa ibaba.)

Kung ang katayuan ay hindi NULL , maghintay o naghintay ng impormasyon sa katayuan ng paghintay sa tindahan sa lokasyon na itinuturo ng katayuan .

Ang katayuan na ito ay maaaring masuri gamit ang mga sumusunod na macros (ang mga macro na ito ay kinukuha ang stat buffer (isang int ) bilang isang argument --- hindi isang pointer sa buffer!):

WIFEXITED ( katayuan )

ay di-zero kung lumabas ang bata nang normal.

WEXITSTATUS ( katayuan )

Sinusuri ang hindi bababa sa makabuluhang walong piraso ng pabalik na code ng bata na tinapos, na maaaring itinakda bilang argumento sa isang tawag upang lumabas () o bilang argument para sa isang return statement sa pangunahing programa. Ang macro na ito ay maaari lamang masuri kung ang WIFEXITED ay bumalik na walang zero.

WIFSIGNALED ( katayuan )

Totoo kung ang proseso ng bata ay lumabas dahil sa isang senyas na hindi nahuli.

WTERMSIG ( katayuan )

nagbabalik ang bilang ng mga senyas na naging sanhi ng proseso ng bata na wakasan. Ang macro na ito ay maaari lamang masuri kung ang WIFSIGNALED ay bumalik na walang zero.

WIFSTOPPED ( katayuan )

Totoo kung ang proseso ng bata na sanhi ng pagbalik ay kasalukuyang tumigil; posible na lamang kung ang tawag ay tapos na gamit ang WUNTRACED .

WSTOPSIG ( katayuan )

ibabalik ang bilang ng signal na naging sanhi ng paghinto ng bata. Ang macro na ito ay maaari lamang masuri kung ang WIFSTOPPED ay bumalik na walang zero.

Ang ilang mga bersyon ng Unix (hal. Linux, Solaris, ngunit hindi AIX, SunOS) ay tumutukoy din sa macro WCOREDUMP ( kalagayan ) upang subukan kung ang proseso ng bata ay dumped core. Gamitin lamang ang nakapaloob sa #ifdef WCOREDUMP ... #endif.

Ibalik ang Halaga

Ang ID ng proseso ng bata na lumabas, o zero kung ginamit ang WNOHANG at walang bata ang magagamit, o -1 sa error (kung saan ang kaso errno ay nakatakda sa naaangkop na halaga).

Mga Mali

ECHILD

kung ang prosesong tinukoy sa Ang pid ay hindi umiiral o hindi isang anak ng proseso ng pagtawag. (Maaaring mangyari ito para sa sariling anak kung ang pagkilos para sa SIGCHLD ay nakatakda sa SIG_IGN. Tingnan din ang seksyon ng LINUX NOTES tungkol sa mga thread.)

EINVAL

kung ang argumento ng mga opsyon ay hindi wasto.

EINTR

kung WNOHANG ay hindi naka-set at isang unblock na signal o isang SIGCHLD ay nahuli.