Appeler la fonction getpid en C avec des exemples

Appeler la fonction getpid en C avec des exemples
GetPid () est la fonction utilisée pour obtenir l'ID de processus du processus qui appelle cette fonction. Le PID pour le processus initial est 1, puis chaque nouveau processus se voit attribuer un nouvel ID. C'est une approche simple pour obtenir le PID. Cette fonction vous aide uniquement à obtenir les ID de processus uniques.

Fonctions utilisées pour obtenir des ID

Deux types d'ID sont présents ici. L'un est l'ID actuel du processus PID. Tandis que l'autre est l'ID du processus parent PPID. Ces deux fonctions sont des fonctions intégrées qui sont définies dans la bibliothèque. Lors de l'exécution du code sans utiliser cette bibliothèque peut provoquer une erreur et arrêter l'exécution.

Fonction getpid () en c

Lorsqu'un processus est formé et est en cours d'exécution, un identifiant unique lui est affecté. C'est l'ID de processus. Cette fonction aide à retourner l'ID du processus qui est actuellement appelé.

Fonction getppid () en c

Cet ID est utile pour retourner le processus du processus / fonction parent.

Exemple 1
Pour comprendre l'exemple de PID dans le processus dans la langue C. Vous avez besoin de deux outils: tout éditeur de texte et le terminal Linux, sur lequel vous êtes censé exécuter les commandes. Créer un fichier dans n'importe quel éditeur de texte. Nous avons créé un nom de fichier Code1.c Comme le code est écrit en langue C, il doit donc être enregistré avec le .C extension.

Nous avons ajouté une seule bibliothèque. Ensuite, ici commence le programme principal. Dans le programme principal, nous appelons la fonction intégrée getPid (); pour récupérer l'ID du processus actuel. Et une variable est introduite et affectée. Pour que la valeur de la fonction pid () soit stockée dans cette variable, alors nous prendrons l'impression de la valeur en utilisant cette variable.

Maintenant, nous voulons exécuter le contenu de ce fichier dans le terminal Linux. La condition préalable du code doit d'abord être compilée puis exécuter. Pour la compilation, GCC est utilisé. Si votre système manque de GCC, vous devez d'abord l'installer en utilisant la commande sudo.

Compilez maintenant le code écrit. Cela peut être accompli en utilisant la commande annexe suivante.

$ Gcc -o code1 code1.c

Tandis que -O est utilisé pour ouvrir le fichier de sauvegarde dans la commande. Puis après -o, nous écrivons le nom de fichier.

Après compilation, exécutez la commande.

$ ./ code1

L'image ci-dessus montre l'ID de processus de la fonction.

Exemple 2
Dans l'exemple précédent, nous utilisons le pid. Mais dans cet exemple, le PID et le PPID sont utilisés. Le code source de cette fonction est presque le même que celui précédent. Seulement il y a un autre ajout d'un ID.

Considérez un fichier qui contient deux variables dans le programme principal qui sont attribuées par les ID de processus. L'un est du processus actuel, et l'autre est du processus parent. Puis similaire au premier exemple, imprimez les deux ID à travers leurs variables.

Int pid_t = getPid ();
Int ppid_t = getppid ();

Ces deux sont les principales fonctions de l'ensemble du code. Maintenant, après la création de fichiers, l'étape suivante consiste à compiler et à exécuter le fichier. Compiler en utilisant GCC dans la commande. Après compilation, puis exécutez-le sur le terminal d'Ubuntu.

$ Gcc -o code1 code1.c
$ ./ code1

La sortie montre que l'ID de processus s'affiche d'abord, puis l'ID de processus parent s'affiche.

Exemple 3
Tous les processus s'exécutent et s'exécutent de manière parallèle. Le parent et les processus d'enfants exécutent toutes les lignes restantes collectivement. Les deux donnent des résultats à la fois. Mais en utilisant une fourche dans le code C, si cette fonction renvoie une valeur inférieure à 0, cela signifie que l'appel de fonction est terminé.

Considérez un nouveau fichier ayant deux bibliothèques dans l'en-tête respective. Ici, une condition est utilisée dans laquelle nous avons utilisé la déclaration «if-else». Dans le programme principal, il est indiqué que si la valeur de la fourche est en valeur, il affichera un message que l'ID du processus est en panne et ne sera pas obtenu. Si la situation est fausse, alors le compilateur se déplacera vers la partie else de la condition. Dans cette partie, l'ID de processus est obtenu, alors nous afficherons cet ID de processus et afficherons un message que l'ID de processus est obtenu. Ici, nous citerons l'instruction if-else du code source.

Maintenant encore, compilez le code, puis exécutez-le.

./ code2

La sortie montre que la partie ELSE a été exécutée et imprimera l'ID de processus puis affichera un message PID.

Exemple 4

Ceci est un autre exemple d'explication du même concept. La fonction fork () renvoie deux valeurs différentes. Dans le cas d'un processus enfant, la valeur est 0, qui doit être retournée. Dans le même temps, la valeur dans le cas du processus parent est l'identification du processus du nouvel enfant.

Dans cet exemple, la même condition if_else est utilisée. Mais ici, deux conditions sont appliquées. Comparaison du PID qui est inférieur à zéro et l'autre égal à zéro. Si le PID est inférieur à zéro, il affichera un message d'erreur. Alors que si le PID est égal à zéro, cela signifie qu'il s'agit d'un processus d'enfant et que la partie ELSE montre que si le PID est supérieur à zéro, c'est un processus parent.

Maintenant, compilez et exécutez le code.

$ gcc -o code3 code3.c
$./ code3

De la sortie, nous pouvons voir que la partie ELSE est imprimée en premier signifie que l'ID de processus est supérieur à 0.

Exemple 5
D'accord, c'est le dernier exemple dans lequel nous avons essayé de résumer tous les codes décrits ci-dessus pour expliquer le fonctionnement de cette fonction. Nous pouvons également utiliser des boucles avec les fonctions Fork () pour utiliser les fonctions getpid (). Nous pouvons utiliser des boucles pour créer de nombreux processus enfants. Ici, nous devons utiliser la valeur de 3 dans la boucle.

Encore une fois, nous devons utiliser l'instruction conditionnelle dans le code. La boucle pour le seul et itérer jusqu'au 3rd tourner.

Enregistrez maintenant le fichier et exécutez-le. Il existe une autre méthode simple pour compiler et exécuter le code uniquement dans une seule commande. C'est.

$ Codes gcc5.C -o S & ./ code5

Se déplaçant maintenant vers la sortie du code. L'identification du processus parent est identique dans tous les processus enfants. Cela signifie que tous ces processus appartiennent à un parent. Ces processus sont exécutés l'un par la suite l'autre car la boucle est limitée à 3. Seules 3 itérations seront effectuées.

Conclusion

Cet article contient les connaissances de base et le fonctionnement d'une fonction getPid () dans les commandes Linux. L'ID unique est affecté à chaque processus via cette fonction.