wait

Autres langues

Langue: ru

Autres versions - même langue

Version: 24 ÉÀÌÑ 2000 (openSuse - 09/10/07)

Section: 2 (Appels système)

éíñ

wait, waitpid - ÏÖÉÄÁÅÔ ÚÁ×ÅÒÛÅÎÉÑ ÐÒÏÃÅÓÓÁ

ëòáôëáñ ó÷ïäëá

#include <sys/types.h>
#include <sys/wait.h>

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

ïðéóáîéå

æÕÎËÃÉÑ wait ÐÒÉÏÓÔÁÎÁ×ÌÉ×ÁÅÔ ×ÙÐÏÌÎÅÎÉÅ ÔÅËÕÝÅÇÏ ÐÒÏÃÅÓÓÁ ÄÏ ÔÅÈ ÐÏÒ, ÐÏËÁ ÄÏÞÅÒÎÉÊ ÐÒÏÃÅÓÓ ÎÅ ÐÒÅËÒÁÔÉÔ ×ÙÐÏÌÎÅÎÉÅ ÉÌÉ ÄÏ ÐÏÑ×ÌÅÎÉÑ ÓÉÇÎÁÌÁ, ËÏÔÏÒÙÊ ÌÉÂÏ ÚÁ×ÅÒÛÁÅÔ ÔÅËÕÝÉÊ ÐÒÏÃÅÓÓ, ÌÉÂÏ ÔÒÅÂÕÅÔ ×ÙÚ×ÁÔØ ÆÕÎËÃÉÀ-ÏÂÒÁÂÏÔÞÉË. åÓÌÉ ÄÏÞÅÒÎÉÊ ÐÒÏÃÅÓÓ Ë ÍÏÍÅÎÔÕ ×ÙÚÏ×Á ÆÕÎËÃÉÉ ÕÖÅ ÚÁ×ÅÒÛÉÌÓÑ (ÔÁË ÎÁÚÙ×ÁÅÍÙÊ "ÚÏÍÂÉ"), ÔÏ ÆÕÎËÃÉÑ ÎÅÍÅÄÌÅÎÎÏ ×ÏÚ×ÒÁÝÁÅÔÓÑ. óÉÓÔÅÍÎÙÅ ÒÅÓÕÒÓÙ, Ó×ÑÚÁÎÎÙÅ Ó ÄÏÞÅÒÎÉÍ ÐÒÏÃÅÓÓÏÍ, ÏÓ×ÏÂÏÖÄÁÀÔÓÑ.

æÕÎËÃÉÑ waitpid ÐÒÉÏÓÔÁÎÁ×ÌÉ×ÁÅÔ ×ÙÐÏÌÎÅÎÉÅ ÔÅËÕÝÅÇÏ ÐÒÏÃÅÓÓÁ ÄÏ ÔÅÈ ÐÏÒ, ÐÏËÁ ÄÏÞÅÒÎÉÊ ÐÒÏÃÅÓÓ, ÕËÁÚÁÎÎÙÊ × ÐÁÒÁÍÅÔÒÅ pid, ÎÅ ÚÁ×ÅÒÛÉÔ ×ÙÐÏÌÎÅÎÉÅ, ÉÌÉ ÐÏËÁ ÎÅ ÐÏÑ×ÉÔÓÑ ÓÉÇÎÁÌ, ËÏÔÏÒÙÊ ÌÉÂÏ ÚÁ×ÅÒÛÁÅÔ ÔÅËÕÝÉÊ ÐÒÏÃÅÓÓ ÌÉÂÏ ÔÒÅÂÕÅÔ ×ÙÚ×ÁÔØ ÆÕÎËÃÉÀ-ÏÂÒÁÂÏÔÞÉË. åÓÌÉ ÕËÁÚÁÎÎÙÊ ÄÏÞÅÒÎÉÊ ÐÒÏÃÅÓÓ Ë ÍÏÍÅÎÔÕ ×ÙÚÏ×Á ÆÕÎËÃÉÉ ÕÖÅ ÚÁ×ÅÒÛÉÌÓÑ (ÔÁË ÎÁÚÙ×ÁÅÍÙÊ "ÚÏÍÂÉ"), ÔÏ ÆÕÎËÃÉÑ ÎÅÍÅÄÌÅÎÎÏ ×ÏÚ×ÒÁÝÁÅÔÓÑ. óÉÓÔÅÍÎÙÅ ÒÅÓÕÒÓÙ, Ó×ÑÚÁÎÎÙÅ Ó ÄÏÞÅÒÎÉÍ ÐÒÏÃÅÓÓÏÍ, ÏÓ×ÏÂÏÖÄÁÀÔÓÑ.

ðÁÒÁÍÅÔÒ pid ÍÏÖÅÔ ÐÒÉÎÉÍÁÔØ ÎÅÓËÏÌØËÏ ÚÎÁÞÅÎÉÊ:

< -1
ÏÚÎÁÞÁÅÔ, ÞÔÏ ÎÕÖÎÏ ÖÄÁÔØ ÌÀÂÏÇÏ ÄÏÞÅÒÎÅÇÏ ÐÒÏÃÅÓÓÁ, ÞÅÊ ÉÄÅÎÔÉÆÉËÁÔÏÒ ÇÒÕÐÐÙ ÐÒÏÃÅÓÓÏ× ÒÁ×ÅÎ ÁÂÓÏÌÀÔÎÏÍÕ ÚÎÁÞÅÎÉÀ pid.
-1
ÏÚÎÁÞÁÅÔ ÏÖÉÄÁÔØ ÌÀÂÏÇÏ ÄÏÞÅÒÎÅÇÏ ÐÒÏÃÅÓÓÁ; ÆÕÎËÃÉÑ wait ×ÅÄÅÔ ÓÅÂÑ ÔÏÞÎÏ ÔÁË ÖÅ.
0
ÏÚÎÁÞÁÅÔ ÏÖÉÄÁÔØ ÌÀÂÏÇÏ ÄÏÞÅÒÎÅÇÏ ÐÒÏÃÅÓÓÁ, ÞÅÊ ÉÄÅÎÔÉÆÉËÁÔÏÒ ÇÒÕÐÐÙ ÐÒÏÃÅÓÓÏ× ÒÁ×ÅÎ ÔÁËÏ×ÏÍÕ Õ ÔÅËÕÝÅÇÏ ÐÒÏÃÅÓÓÁ.
> 0
ÏÚÎÁÞÁÅÔ ÏÖÉÄÁÔØ ÄÏÞÅÒÎÅÇÏ ÐÒÏÃÅÓÓÁ, ÞÅÍ ÉÄÅÎÔÉÆÉËÁÔÏÒ ÒÁ×ÅÎ pid.

úÎÁÞÅÎÉÅ options ÓÏÚÄÁÅÔÓÑ ÐÕÔÅÍ ÂÉÔÏ×ÏÊ ÏÐÅÒÁÃÉÉ éìé ÎÁÄ ÓÌÅÄÕÀÝÉÍÉ ËÏÎÓÔÁÎÔÁÍÉ:

WNOHANG
ÏÚÎÁÞÁÅÔ ×ÅÒÎÕÔØ ÕÐÒÁ×ÌÅÎÉÅ ÎÅÍÅÄÌÅÎÎÏ, ÅÓÌÉ ÎÉ ÏÄÉÎ ÄÏÞÅÒÎÉÊ ÐÒÏÃÅÓÓ ÎÅ ÚÁ×ÅÒÛÉÌ ×ÙÐÏÌÎÅÎÉÅ.
WUNTRACED
ÏÚÎÁÞÁÅÔ ×ÏÚ×ÒÁÝÁÔØ ÕÐÒÁ×ÌÅÎÉÅ ÔÁËÖÅ ÄÌÑ ÏÓÔÁÎÏ×ÌÅÎÎÙÈ ÄÏÞÅÒÎÉÈ ÐÒÏÃÅÓÓÏ×, Ï ÞØÅÍ ÓÔÁÔÕÓÅ ÅÝÅ ÎÅ ÂÙÌÏ ÓÏÏÂÝÅÎÏ.

åÓÌÉ status ÎÅ ÒÁ×ÅÎ NULL, ÔÏ ÆÕÎËÃÉÉ wait É waitpid ÓÏÈÒÁÎÑÀÔ ÉÎÆÏÒÍÁÃÉÀ Ï ÓÔÁÔÕÓÅ × ÐÅÒÅÍÅÎÎÏÊ, ÎÁ ËÏÔÏÒÕÀ ÕËÁÚÙ×ÁÅÔ status.

üÔÏÔ ÓÔÁÔÕÓ ÍÏÖÎÏ ÉÓÓÌÅÄÏ×ÁÔØ Ó ÐÏÍÏÝØÀ ÎÉÖÅÓÌÅÄÕÀÝÉÈ ÍÁËÒÏÓÏ× (ÏÎÉ ÐÒÉÎÉÍÁÀÔ × ËÁÞÅÓÔ×Å ÁÒÇÕÍÅÎÔÁ ÂÕÆÅÒ (ÔÉÐÁ int), --- Á ÎÅ ÕËÁÚÁÔÅÌØ ÎÁ ÂÕÆÅÒ!):

WIFEXITED(status)
ÎÅ ÒÁ×ÎÏ ÎÕÌÀ, ÅÓÌÉ ÄÏÞÅÒÎÉÊ ÐÒÏÃÅÓÓ ÎÏÒÍÁÌØÎÏ ÚÁ×ÅÒÛÉÌÓÑ.
WEXITSTATUS(status)
×ÏÚ×ÒÁÝÁÅÔ ×ÏÓÅÍØ ÍÌÁÄÛÉÈ ÂÉÔÏ× ×ÏÚ×ÒÁÝÁÅÍÏÇÏ ÚÎÁÞÅÎÉÑ ÚÁ×ÅÒÛÉ×ÛÅÇÏÓÑ ÄÏÞÅÒÎÅÇÏ ÐÒÏÃÅÓÓÁ. üÔÉ ÂÉÔÙ ÍÏÇÌÉ ÂÙÔØ ÕÓÔÁÎÏ×ÌÅÎÙ × ÁÒÇÕÍÅÎÔÅ ÆÕÎËÃÉÉ exit() ÉÌÉ × ÁÒÇÕÍÅÎÔÅ ÏÐÅÒÁÔÏÒÁ return × ÆÕÎËÃÉÉ main(). üÔÏÔ ÍÁËÒÏÓ ÍÏÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ, ÔÏÌØËÏ ÅÓÌÉ WIFEXITED ×ÅÒÎÕÌ ÎÅÎÕÌÅ×ÏÅ ÚÎÁÞÅÎÉÅ.
WIFSIGNALED(status)
×ÏÚ×ÒÁÝÁÅÔ ÉÓÔÉÎÎÏÅ ÚÎÁÞÅÎÉÅ, ÅÓÌÉ ÄÏÞÅÒÎÉÊ ÐÒÏÃÅÓÓ ÚÁ×ÅÒÛÉÌÓÑ ÉÚ-ÚÁ ÎÅÐÅÒÅÈ×ÁÞÅÎÎÏÇÏ ÓÉÇÎÁÌÁ.
WTERMSIG(status)
×ÏÚ×ÒÁÝÁÅÔ ÎÏÍÅÒ ÓÉÇÎÁÌÁ, ËÏÔÏÒÙÊ ÐÒÉ×ÅÌ Ë ÚÁ×ÅÒÛÅÎÉÀ ÄÏÞÅÒÎÅÇÏ ÐÒÏÃÅÓÓÁ. üÔÏÔ ÍÁËÒÏÓ ÍÏÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ÔÏÌØËÏ ÅÓÌÉ WIFSIGNALED ×ÅÒÎÕÌ ÎÅÎÕÌÅ×ÏÅ ÚÎÁÞÅÎÉÅ.
WIFSTOPPED(status)
×ÏÚ×ÒÁÝÁÅÔ ÉÓÔÉÎÎÏÅ ÚÎÁÞÅÎÉÅ, ÅÓÌÉ ÄÏÞÅÒÎÉÊ ÐÒÏÃÅÓÓ, ÉÚ-ÚÁ ËÏÔÏÒÏÇÏ ÆÕÎËÃÉÑ ×ÅÒÎÕÌÁ ÕÐÒÁ×ÌÅÎÉÅ, × ÎÁÓÔÏÑÝÉÊ ÍÏÍÅÎÔ ÏÓÔÁÎÏ×ÌÅÎ; ÜÔÏ ×ÏÚÍÏÖÎÏ ÔÏÌØËÏ ÅÓÌÉ ÉÓÐÏÌØÚÏ×ÁÌÓÑ ÆÌÁÇ WUNTRACED.
WSTOPSIG(status)
×ÏÚ×ÒÁÝÁÅÔ ÎÏÍÅÒ ÓÉÇÎÁÌÁ, ÉÚ-ÚÁ ËÏÔÏÒÏÇÏ ÄÏÞÅÒÎÉÊ ÐÒÏÃÅÓÓ ÂÙÌ ÏÓÔÁÎÏ×ÌÅÎ. üÔÏÔ ÍÁËÒÏÓ ÍÏÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ÔÏÌØËÏ ÅÓÌÉ WIFSTOPPED ×ÅÒÎÕÌ ÎÅÎÕÌÅ×ÏÅ ÚÎÁÞÅÎÉÅ.

÷ïú÷òáýáåíïå úîáþåîéå

éÄÅÎÔÉÆÉËÁÔÏÒ ÄÏÞÅÒÎÅÇÏ ÐÒÏÃÅÓÓÁ, ËÏÔÏÒÙÊ ÚÁ×ÅÒÛÉÌ ×ÙÐÏÌÎÅÎÉÅ, -1 × ÓÌÕÞÁÅ ÏÛÉÂËÉ ÉÌÉ ÎÕÌØ, ÅÓÌÉ ÉÓÐÏÌØÚÏ×ÁÌÓÑ WNOHANG, ÎÏ ÎÉ ÏÄÉÎ ÄÏÞÅÒÎÉÊ ÐÒÏÃÅÓÓ ÅÝÅ ÎÅ ÚÁ×ÅÒÛÉÌ ×ÙÐÏÌÎÅÎÉÅ (× ÜÔÏÍ ÓÌÕÞÁÅ errno ÕÓÔÁÎÁ×ÌÉ×ÁÅÔÓÑ ÄÏÌÖÎÙÍ ÏÂÒÁÚÏÍ).

ïûéâëé

ECHILD
ÐÒÏÃÅÓÓ, ÕËÁÚÁÎÎÙÊ × pid, ÎÅ ÓÕÝÅÓÔ×ÕÅÔ ÉÌÉ ÎÅ Ñ×ÌÑÅÔÓÑ ÄÏÞÅÒÎÉÍ ÐÒÏÃÅÓÓÏÍ ÔÅËÕÝÅÇÏ ÐÒÏÃÅÓÓÁ. (üÔÏ ÍÏÖÅÔ ÓÌÕÞÉÔØÓÑ É ÄÌÑ ÓÏÂÓÔ×ÅÎÎÏÇÏ ÄÏÞÅÒÎÅÇÏ ÐÒÏÃÅÓÓÁ, ÅÓÌÉ ÏÂÒÁÂÏÔÞÉË ÓÉÇÎÁÌÁ SIGCHLD ÕÓÔÁÎÏ×ÌÅÎ × SIG_IGN. óÍÏÔÒÉ ÔÁËÖÅ ÇÌÁ×Õ úáíåþáîéñ ÐÏ ÐÏ×ÏÄÕ ÎÉÔÅÊ.)
EINVAL
áÒÇÕÍÅÎÔ options ÎÅ×ÅÒÅÎ.
ERESTARTSYS
éÓÐÏÌØÚÏ×ÁÌÓÑ ÆÌÁÇ WNOHANG, É ÂÙÌ ÐÏÊÍÁÎ ÎÅÂÌÏËÉÒÏ×ÁÎÎÙÊ ÓÉÇÎÁÌ ÉÌÉ SIGCHLD. üÔÁ ÏÛÉÂËÁ ×ÏÚ×ÒÁÝÁÅÔÓÑ ÓÉÓÔÅÍÎÙÍ ×ÙÚÏ×ÏÍ. âÉÂÌÉÏÔÅÞÎÙÅ ÆÕÎËÃÉÉ ÎÅ ÍÏÇÕ ×ÅÒÎÕÔØ ERESTARTSYS, ÎÏ ÄÏÌÖÎÙ ×ÅÒÎÕÔØ EINTR.

úáíåþáîéñ

óÔÁÎÄÁÒÔ Single Unix Specification ÏÐÉÓÙ×ÁÅÔ ÆÌÁÇ SA_NOCLDWAIT (ÎÅ ÒÅÁÌÉÚÏ×ÁÎ ÐÏÄ Linux), ÔÁËÏÊ, ÞÔÏ ÅÓÌÉ ÏÎ ÕÓÔÁÎÏ×ÌÅÎ, ÉÌÉ ÏÂÒÁÂÏÔÞÉË ÓÉÇÎÁÌÁ SIGCHLD ÕÓÔÁÎÏ×ÌÅÎ × SIG_IGN (ÞÔÏ, ËÓÔÁÔÉ, ÎÅ ÒÁÚÒÅÛÅÎÏ ÓÔÁÎÄÁÒÔÎÏÍ POSIX), ÔÏ ÚÁ×ÅÒÛÉ×ÛÉÅÓÑ ÄÏÞÅÒÎÉÅ ÐÒÏÃÅÓÓÙ ÎÅ ÓÔÁÎÏ×ÑÔÓÑ ÚÏÍÂÉ, Á ×ÙÚÏ× wait() ÉÌÉ waitpid() ÂÌÏËÉÒÕÅÔÓÑ, ÐÏËÁ ×ÓÅ ÄÏÞÅÒÎÉÅ ÐÒÏÃÅÓÓÙ ÎÅ ÚÁ×ÅÒÛÁÔÓÑ, Á ÚÁÔÅÍ ×ÏÚ×ÒÁÝÁÅÔ ËÏÄ ÏÛÉÂËÉ, ÕÓÔÁÎÁ×ÌÉ×ÁÑ errno × ECHILD.

÷ ÑÄÒÅ Linux ÎÉÔÉ, ÕÐÒÁ×ÌÑÅÍÙÅ ÑÄÒÏÍ, ÕÓÔÒÏÊÓÔ×ÏÍ ÎÅ ÏÔÌÉÞÁÀÔÓÑ ÏÔ ÐÒÏÃÅÓÓÁ. îÉÔØ -- ÜÔÏ ÐÒÏÓÔÏ ÐÒÏÃÅÓÓ, ËÏÔÏÒÙÊ ÓÏÚÄÁÎ ÕÎÉËÁÌØÎÙÍ (ÓÕÝÅÓÔ×ÕÀÝÉÍ ÔÏÌØËÏ × Linux) ÓÉÓÔÅÍÎÙÍ ×ÙÚÏ×ÏÍ clone(2); ÄÒÕÇÉÅ ÐÒÏÃÅÄÕÒÙ, ÔÁËÉÅ ËÁË ÐÅÒÅÎÏÓÉÍÁÑ ×ÅÒÓÉÑ pthread_create(3), ÔÁËÖÅ ÒÅÁÌÉÚÏ×ÁÎÙ Ó ÐÏÍÏÝØÀ clone(2). ôÁËÉÍ ÏÂÒÁÚÏÍ, ÅÓÌÉ ÐÒÏÃÅÓÓÙ A É B Ñ×ÌÑÀÔÓÑ ÂÒÁÔØÑÍÉ, ÎÉÔØ A ÎÅ ÍÏÖÅÔ ÐÏÄÏÖÄÁÔØ Ó ÐÏÍÏÝØÀ wait() ÐÒÏÃÅÓÓ, ÐÏÒÏÖÄÅÎÎÙÊ ÐÏÔÏËÏÍ B ÉÌÉ ÅÇÏ ÐÏÔÏÍËÁÍÉ, ÐÏÔÏÍÕ ÞÔÏ ÄÑÄÑ ÎÅ ÍÏÖÅÔ ÖÄÁÔØ Ó ÐÏÍÏÝØÀ wait() Ó×ÏÉÈ ÐÌÅÍÑÎÎÉËÏ×. ÷ ÎÅËÏÔÏÒÙÈ Unix-ÐÏÄÏÂÎÙÈ ÓÉÓÔÅÍÁÈ, ÇÄÅ ÍÎÏÖÅÓÔ×ÅÎÎÙÅ ÎÉÔÉ ÒÅÁÌÉÚÏ×ÁÎÙ ËÁË ÐÒÉÎÁÄÌÅÖÁÝÉÅ ÏÄÉÎÏÞÎÏÍÕ ÐÒÏÃÅÓÓÕ, ÎÉÔØ A ÍÏÖÅÔ ÖÄÁÔØ Ó ÐÏÍÏÝØÀ wait() ÐÒÏÃÅÓÓÙ, ÐÏÒÏÖÄÅÎÎÙÅ Ó×ÏÅÊ ÓÅÓÔÒÉÎÓËÏÊ ÎÉÔØÀ B; ×ÁÍ ÐÒÉÄÅÔÓÑ ÐÅÒÅÐÉÓÁÔØ ËÏÄ, ËÏÔÏÒÙÊ ÄÅÌÁÅÔ ÔÁËÉÅ ÄÏÐÕÝÅÎÉÑ, ÞÔÏÂÙ ÏÎ ÚÁÒÁÂÏÔÁÌ ÐÏÄ Linux.

óïïô÷åôóô÷éå óôáîäáòôáí

SVr4, POSIX.1

óíïôòé ôáëöå

clone(2), signal(2), wait4(2), pthread_create(3), signal(7)