C Utilisation de la fonction SETPGID

C Utilisation de la fonction SETPGID
Chaque fois que nous entrons dans la commande shell, un nouveau processus est démarré dans la session. Le système affecte ensuite un identifiant de processus (PID) et un identifiant de groupe de processus (PGID). PID indique l'ID de processus, tandis que PGID décrit l'ID de groupe de processus de toute tâche actuellement effectuée par le système ou toujours en cours. Le setpgid () est une fonction pertinente pour cela. Comme son nom l'indique, il est utilisé soit pour s'ajouter au groupe de processus existant ou, dans un autre cas, pour créer un nouveau groupe de processus à l'intérieur de la même session du processus d'appel. L'identifiant de groupe pour le processus du leader de la session est toujours le même. Ça n'a pas changé.

Cette fonction est utilisée pour définir le PGID (ID de groupe de processus) à l'intérieur de la session du processus d'appel afin que nous puissions attribuer ou réaffecter le processus à différents groupes de processus. Pour démarrer un nouveau groupe de processus avec un processus particulier en tant que leader de groupe, cette fonction aide également dans cet aspect. Cet article mettra en évidence la création et le fonctionnement de la fonction setpgid ().

Description

L'ID de processus est un identifiant qui existe dans la session d'un processus d'appel. C'est l'ID dont nous voulons changer PGID. Il peut être soit l'appelant de setpgid (), soit en être les enfants. Le PID ne peut pas être le chef de session qui doit être modifié.

PGID, en revanche, est le nouvel ID que nous voulons attribuer à ce processus particulier spécifié par PID. Si PGID pointe vers le groupe de processus existant, il doit être présent à l'intérieur de la session de l'appelant. Le nouveau groupe est également créé à l'intérieur de la session de l'appelant.

Syntaxe

#inclure
int setpgid (pid_t, pgid);

La fonction setpgid () est présente dans le champ de la bibliothèque. Et cela est inclus dans la raison pour laquelle nous utilisons cette bibliothèque ici. Dans la partie paramètre de la fonction, les deux ID (PID, PGID) sont écrits. Les deux appartiennent à l'ID de processus que nous souhaitons définir ou celui que nous voulons rejoindre ou créer.

Faits et fonctionnalités de la fonction setpgid ()

Comme discuté précédemment, SetPGid () définit l'ID de groupe d'un processus que PID spécifie à l'ID de groupe de processus. Parfois, il existe certaines circonstances où tous les groupes de processus se trouvent dans la même session. Cela se produit lorsqu'un processus est pris d'un groupe à un autre via setpgid (). Dans cette situation, PGID spécifie le groupe de processus existant et le rejoint.

Getpgid () est une fonction comme setpgid (). La syntaxe des deux processus est la même, y compris les appels de fonction. Comme ces deux fonctions, getpgrp () et getpgid (0) de la même manière sont équivalents les uns aux autres.

Utilisations des groupes de processus

Les groupes de processus travaillent pour distribuer les signaux pour transmettre et attribuer les demandes d'entrée. Les processus qui possèdent les mêmes groupes de processus sont au premier plan et peuvent être lus, tandis que les autres processus seront bloqués avec un signal s'ils sont tentés de lire.

Valeur de retour

Lorsque l'appel de fonction est effectué avec succès et que le processus est effectué, le setpgid () et setpgrp () renvoie zéro lorsque l'erreur se produit et que la fonction renvoie -1. Après que le signal d'erreur est passé. GetPGid () et getpgrp () sont associés à setpgid (). Donc getpgid () renvoie un groupe de processus lorsqu'il est terminé avec succès. En erreur, il donne -1. Tandis que la fonction getpgrp () donne toujours au groupe de processus actuellement utilisé.

Pour implémenter quelques exemples, utilisez un éditeur de texte et un terminal Linux dans cet aspect. Nous allons écrire du code dans les éditeurs de texte, puis afficher le résultat dans le terminal Linux.

Exemple 1

Premièrement, nous utiliserons la même bibliothèque décrite ci-dessus dans le guide, ce qui est essentiel pour exécuter le code.

#inclure

Dans le programme principal, le type de retour est considéré comme un entier. Il n'est pas vide car la fonction renvoie la valeur sous la forme d'un entier en tant qu'ID de processus. Nous utilisons la statement if car nous devons appliquer une vérification de l'erreur. La première ligne de l'instruction appelle le setpgid () avec l'argument d'une autre fonction getpid (). Cette fonction obtiendra l'ID que nous voulons définir. Si la valeur renvoyée est «-1», cela signifie qu'une erreur s'est produite afin que le processus soit terminé.

If (setpgid (getPid (), 0) == -1)

Cela appellera à nouveau la même fonction Setpgid pour réinitialiser l'ID par défaut du processus. Mais si la condition est vraie, signifie que la valeur renvoyée est 0, alors les appels de la fonction pour ID de processus getPid (), et l'identifiant de processus de groupe getpgrp () est appelé.

Enregistrer le fichier avec l'extension C et voir la sortie passer à la borne Linux; Le code source sera compilé puis exécuté via un compilateur GCC. Un fichier d'entrée est utilisé qui est un code source, et un fichier est utilisé pour afficher la sortie. 'déposer. c 'est le nom d'un fichier.

$ Gcc -o fichier de fichier.c
$./déposer

Le code est exécuté avec succès lorsque nous exécutons le code, et l'ID de processus et les ID de groupe de processus sont obtenus. Les deux ID sont les mêmes, ce qui signifie que les deux se trouvent dans la même session. Chaque fois que vous exécutez le code, les ID résultants seront différents.

Exemple 2

Ici, nous utiliserons une fourche () dans le code source. Comme la fonction Fork () est utilisée pour créer un nouveau processus, le processus de l'enfant et ce processus d'enfant s'exécutent simultanément avec son processus parent. Ceci est une autre méthode pour définir l'ID et les ID de groupe des processus nouvellement créés. Tout d'abord, nous devons initialiser une variable pour vérifier si l'erreur existe ou non. S'il existe, alors un signal d'erreur est passé. Et dans la partie else-if, la fonction de fourche est appelée. Si l'ID de processus est égal à la fourche renvoie 0, cela signifie que le nouveau processus est créé.

If ((pid = fork ()) == 0)

Tous les identifiants de groupe d'un enfant seront affichés avant d'attendre et après. De même, les ID de processus parent seront affichés; Ceux-ci sont obtenus via la fonction getpid (). En fin de compte, la fonction setpgid () sera appelée si elle n'est pas nulle, puis une erreur est passée.

Maintenant, nous verrons le résultat. Tous les ID de processus et les ID de groupe de processus seront affichés. En utilisant Fork (), les ID parent-enfant sont affichés séparément. Tout d'abord, l'ID de processus parent et enfant est affiché avant l'attente puis après sa.

Conclusion

L'article «C: Utilisation de la fonction Setpgid» est un article qui contient la description de base concernant la fonctionnalité SetPgid () et la création et l'utilisation de l'ID de processus de processus et de groupe. Certaines erreurs sont les raisons pour lesquelles l'arrêt du processus pourrait être les erreurs de recherche qui ne trouvent aucun ID existant, l'ID de processus du processus actuel est attribué automatiquement. Nous espérons que cet effort vous aidera dans vos termes de travail dans le langage de programmation C.