état du processus dans Unix

J’ai besoin de comprendre ce qui arrive à un processus sous Unix quand il appelle la fonction pause ().

Considérant un diagramme d’état simple avec trois états: prêt, exécuter et attendre. Si mon programme imprime seulement son pid et fait une pause, le programme sera-t-il indéfiniment en état d’attente?

Si cela se produit while(1) { pause() } , il sera indéfiniment dans l’état “wait” aussi?

De la page de manuel:

pause () provoque la mise en veille du processus appelant (ou du thread) jusqu’à ce qu’un signal soit envoyé qui termine le processus ou provoque l’appel d’une fonction de capture de signal.

Ainsi, le programme peut ne pas être indéfiniment en état de veille (“wait”, pour utiliser votre mot). Il quittera cet état si un signal est reçu. Cependant, si vous placez l’appel pause() dans une boucle infinie serrée selon votre exemple, le programme sera exécuté à nouveau à la réception d’un signal, mais sera rapidement remis en veille.

Lorsque des signaux sont reçus pendant la pause() , le gestionnaire de signal (le cas échéant) sera exécuté et le contrôle retournera au point juste après l’appel de pause() dès que le gestionnaire reviendra.