Вывучаюць каманды Linux - чакаць

імя

чакаць, waitpid - чакаць працэсу спынення

канспект

#include
#include

pid_t чакання (ідэалам * статус);
pid_t waitpid (pid_t PID, INT * стан, унутр варыянты);

апісанне

Функцыя чакання прыпыняе выкананне бягучага працэсу , пакуль дзіця не выйшаў, або пакуль сігнал не падаецца, дзеянне якога завяршае бягучы працэс або выклікаць функцыю апрацоўкі сігналу. Калі дзіця ўжо выйшаў на момант выкліку (так званы працэс «зомбі»), то функцыя неадкладна вяртаецца. Усе сістэмныя рэсурсы, якія выкарыстоўваюцца дзіцем вызваляюцца.

Waitpid функцыя прыпыняе выкананне бягучага працэсу , пакуль дзіця , як паказана ў Pid аргументу пакінула, або пакуль сігнал не падаецца, дзеянне якога завяршае бягучы працэс або выклікаць функцыю апрацоўкі сігналу. Калі дзіця па просьбе PID ужо завяршыўся да моманту выкліку (так званы працэс «зомбі»), то функцыя неадкладна вяртаецца. Усе сістэмныя рэсурсы, якія выкарыстоўваюцца дзіцем вызваляюцца.

Значэнне PID можа быць адным з:

<-1

што азначае чакаць любога даччынага працэсу , чый ідэнтыфікатар групы роўная абсалютным значэнні PID.

-1

што азначае чакаць любога даччынага працэсу; гэта тое ж самае паводзіны , якое чакаюць экспанаты.

0

што азначае чакаць любога даччынага працэсу , чый групы ID роўная які выклікае працэсу.

> 0

што азначае чакаць дзіцяці , чый ідэнтыфікатар працэсу роўны значэнню PID.

Кошт апцыёнам з'яўляецца АБО з нуля або больш з наступных канстант:

WNOHANG

што азначае неадкладны вяртанне, калі ні адзін дзіця не выйшаў.

WUNTRACED

што азначае таксама вяртаць для дзяцей спыненых, і статус якіх не паведамлялася.

(Для Linux-толькі варыянты, см. Ніжэй)

Калі статус ня NULL, чакаць ці інфармацыя аб стане waitpid краму ў месцы , на які паказвае статус.

Гэты статус можа быць ацэнены з дапамогай наступных макрасаў (гэтыя макрасы ўзяць стат буфер (цэлы лік) у якасці аргументу --- а ня паказальнік на буфер!):

WIFEXITED (статус)

выдатная ад нуля, калі дзіця нармальна завяршыўся.

WEXITSTATUS (статус)

ацэньвае найменш значныя восем біт кода вяртання дзіцяці , які спыняецца, які можа быць усталяваны ў якасці аргументу выкліку для выхаду () або як аргумент для аператара вяртання ў асноўнай праграме. Гэты макрас можа быць ацэнена толькі калі WIFEXITED вяртаецца ненулявое значэнне.

WIFSIGNALED (статус)

вяртае ісціну, калі даччыны працэс завяршыўся з-за сігналам, які не быў злоўлены.

WTERMSIG (статус)

вяртае нумар сігналу, які прымусіў даччыны працэс спыніць. Гэты макрас можа быць ацэнена толькі калі WIFSIGNALED вяртаецца ненулявое значэнне.

WIFSTOPPED (статус)

вяртае ісціну, калі даччыны працэс, які выклікаў вяртанне ў сапраўдны момант спынены; гэта магчыма толькі ў выпадку , калі выклік быў зроблены з выкарыстаннем WUNTRACED.

WSTOPSIG (статус)

вяртае нумар сігналу, які выклікаў дзіця, каб спыніць. Гэты макрас можа быць ацэнена толькі калі WIFSTOPPED вяртаецца ненулявое значэнне.

Некаторыя версіі Unix (напрыклад , Linux, Solaris, але не AIX, SunOS) таксама вызначаюць макрас WCOREDUMP (статус) , каб праверыць скідалі Ці даччыны працэс ядра. Толькі выкарыстаць гэты зняволены ў #ifdef WCOREDUMP ... #endif.

вяртаецца значэнне

Ідэнтыфікатар працэсу дзіцяці , які выйшаў, або нуль , калі WNOHANG быў выкарыстаны і ні адзін дзіця быў даступны, або -1 ў выпадку памылкі (у гэтым выпадку ERRNO усталёўваецца адпаведнае значэнне).

памылкі

ECHILD

калі працэс, названы ў PID не існуе ці не з'яўляецца даччыным выклікаюць працэсам. (Гэта можа адбыцца для ўласнага дзіцяці, калі дзеянне для SIGCHLD усталёўваецца ў SIG_IGN Глядзі. Таксама LINUX Заўвагі раздзел аб патоках.)

EINVAL

калі варыянты аргумент быў прызнаны несапраўдным.

EINTR

калі WNOHANG не быў устаноўлены і быў перахопленая адмыкнутая сігнал або SIGCHLD.