web-dev-qa-db-fra.com

Que fait wait () sur Unix?

Je lisais sur la fonction wait() dans un livre de systèmes Unix. Le livre contient un programme qui contient wait(NULL). Je ne comprends pas ce que cela signifie. Dans un autre programme, il y avait

while(wait(NULL)>0) 

... ce qui m'a aussi fait me gratter la tête.

Quelqu'un peut-il expliquer ce que la fonction ci-dessus fait?

7
Naruto

man wait (2)

Tous ces appels système sont utilisés pour attendre les changements d'état dans un enfant du processus appelant et obtenir des informations sur l'enfant dont l'état a changé. Un changement d'état est considéré comme étant: l'enfant s'est terminé; l'enfant a été arrêté par un signal; ou l'enfant a été repris par un signal

Donc, wait() permet à un processus d'attendre qu'un de ses processus enfants change d'état, par exemple. Si waitpid() est appelé avec un identifiant de processus, il attend que le processus spécifique enfant change d'état. Si pid n'est pas spécifié, cela équivaut à appeler wait() et attend/ any processus enfant pour changer son état.

La fonction wait() renvoie un pid enfant en cas de succès. Ainsi, lorsqu'il est appelé dans une boucle comme celle-ci:

while(wait(NULL)>0) 

Cela signifie attendre que tous les processus enfants se terminent (ou changer d'état) et qu'aucun autre processus enfant ne soit inattendu (ou jusqu'à ce qu'une erreur se produise)

21
iabdalkader

google suggère rapidement, wait(NULL) attend que l'un des processus enfants se termine

2
Aniket Inge

wait(NULL) qui devrait être équivalent à waitpid(-1, NULL, 0)

wait(NULL) attend que tous les processus enfants soient terminés

0
Rahul Tripathi