Attendre le système en c

Attendre le système en c

Lorsqu'un processus développe un processus d'enfant, il est parfois important que le processus parent attende que l'enfant l'ait terminé avant de continuer. C'est exactement ce que la fonction du système attend () accomplit.

L'attente fait que le parent attend que l'enfant modifie son état. Le changement d'état pourrait être dû à la résiliation du processus de l'enfant, à cessé par un signal ou à la reprise par un signal. Dans certaines circonstances, lorsqu'un processus d'enfant quitte ou change d'état, le processus parent doit être informé de l'altération de l'enfant dans l'État ou l'État de résiliation. Dans ce cas, le processus parent utilise des fonctions comme Wait () pour se renseigner sur la mise à jour dans l'état du processus de l'enfant.

Wait () suspend le processus de l'appelant jusqu'à ce que le système reçoive des informations sur l'état de l'enfant final. Wait () revient instantanément si le système a déjà des informations d'état sur un processus d'enfant fini lorsqu'il est invoqué. Si le processus de l'appelant reçoit le signal avec action pour exécuter un gestionnaire de signaux ou terminer le processus, attendre () est également terminé.

La fonction du système WaitPid () fait une pause actuelle jusqu'à ce que l'argument PID spécifie un enfant avec un état altéré. WaitPid () attend uniquement pour les enfants licenciés par défaut; Cependant, ce comportement peut être modifié. L'appel du système Wait () accepte un seul paramètre, qui contient les informations et les mises à jour du processus. Si vous ne vous souciez pas du statut de sortie du processus de l'enfant et que vous ne vous souciez que de faire attendre le parent de l'enfant, utilisez Null comme valeur. Dans ce guide, nous allons développer un exemple pour la compréhension de l'appel d'attente () dans la programmation C.

Conditions préalables

  • Tout système d'exploitation de votre choix. Nous utilisons Ubuntu 20.04 Système d'exploitation Linux.
  • Accès à l'utilisateur racine
  • Compilateur GCC installé et configuré

Exemple pour élaborer l'appel du système d'attente en C

Ouvrez le terminal et vérifiez si le compilateur GCC est installé ou non. S'il n'est pas installé, utilisez la commande annexe:

$ Sudo apt install gcc

Sur Ubuntu 20.04 Système, vous devez d'abord créer un nouveau fichier avec le .C extension. Pour ce faire, allez dans votre répertoire personnel et générez un nouveau fichier vide intitulé «Wait1». Vous pouvez également utiliser la commande nano sur votre terminal pour le faire.

$ nano wait1.c

Après avoir créé le «Wait1.Fichier C ”, il s'ouvrira dans un éditeur de texte GNU sur votre système Linux et collera le code ci-dessous. Après cela, enregistrez et sortez du programme.

Le fichier d'en-tête C / C ++ est le point d'entrée de votre code vers les nombreuses déclarations constantes, types et fonctions de la POSIX OS. Plusieurs types dérivés fondamentaux sont inclus dans l'en-tête et doivent être utilisés dans la mesure du possible. est un fichier d'en-tête qui comprend les informations nécessaires pour inclure les routines d'entrée / sortie dans notre programme. Les constantes symboliques à utiliser avec WaitPid sont définies dans le . Nous avons également utilisé l'appel du système de fourche dans le programme.

L'appel système Fork () est utilisé pour démarrer un nouveau processus, connu sous le nom de processus enfant, qui s'exécute en parallèle avec le processus d'appel Fork () qui est le processus parental. Les deux processus implémenteront l'instruction suivante après l'appel du système Fork () lorsqu'un nouveau processus d'enfant aura été établi. Un processus d'enfant partage le même «compteur de programme» PC, les registres du processeur et les fichiers ouverts en tant que parent. Il renvoie une valeur entière sans paramètres. Le processus commence par l'impression de «avant la fourchette."Ensuite, en utilisant l'appel système Fork (), un processus d'enfant est créé.

L'appel d'attente () est introduit dans la section parent du code. En conséquence, le processus parent est suspendu dès que le processeur commence à exécuter le parent car l'instruction initiale attend (null). En conséquence, le processus de l'enfant s'exécute d'abord, et toutes les lignes de sortie concernent le processus de l'enfant. L'appel du système null in wait () indique que nous ne saurons pas sur la transition de l'état de la transition de l'enfant. Maintenant encore, commencez votre terminal. Dans Ubuntu 20.04, utilisez l'instruction GCC ci-dessous, précédé du nom de fichier.

$ gcc wait1.c

Maintenant, exécutez le code à l'aide de la commande apposée suivante dans le terminal.

$ ./un.dehors

Comme il est déjà expliqué, l'ID parent et enfant des processus seront affichés à l'aide d'un appel du système d'attente.

Conclusion

Cet article a démontré l'utilisation de l'appel du système Wait () dans la programmation C. Nous avons mis en œuvre l'un des exemples pour montrer la mise en œuvre réussie de l'appel d'attente (). L'ensemble du code est également décrit en détail pour la compréhension des utilisateurs. J'espère que vous allez facilement mettre en œuvre et utiliser l'appel du système Wait () chaque fois qu'il est nécessaire.