Table des matières
Sortie du processus" >Sortie du processus
Comparaison de plusieurs méthodes de sortie" >Comparaison de plusieurs méthodes de sortie
Fonctions exit() et _exit()" >Fonctions exit() et _exit()
La différence entre exit() et _exit()" >La différence entre exit() et _exit()
L'ordre différent dans lequel les processus parent et enfant sont terminés produira des résultats différents" >L'ordre différent dans lequel les processus parent et enfant sont terminés produira des résultats différents
Maison Tutoriel système Linux Méthodes et techniques pour quitter le processus Linux : comment terminer le processus en douceur

Méthodes et techniques pour quitter le processus Linux : comment terminer le processus en douceur

Feb 15, 2024 am 11:10 AM
linux linux教程 linux系统 linux命令 shell脚本 Linux embarqué Débuter avec Linux apprentissage Linux

La sortie de processus est une opération courante dans les systèmes Linux. Elle permet à un processus de mettre fin à sa propre opération, de libérer les ressources qu'il occupe et de revenir à son propre état. Il existe de nombreuses raisons pour lesquelles un processus se termine, comme terminer des tâches normalement, rencontrer des erreurs, recevoir des signaux, etc. Il existe de nombreuses façons de quitter un processus, par exemple en utilisant exit(), return, _exit(), abort() et d'autres fonctions ou instructions. Mais savez-vous vraiment comment quitter un processus Linux ? Savez-vous comment utiliser et choisir la méthode de sortie de processus appropriée sous Linux ? Savez-vous comment terminer un processus en douceur sous Linux ? Cet article vous présentera en détail les connaissances pertinentes sur la sortie du processus Linux, afin que vous puissiez mieux utiliser et comprendre cette opération courante sous Linux.

Linux 进程退出的方法和技巧:如何优雅地结束进程

Sortie du processus

La sortie d'un processus sous Linux se divise en deux types : sortie normale et sortie anormale :

1.Sortez normalement

a. Exécutez return dans la fonction main().

b. Appelez la fonction exit()

c. Appelez la fonction _exit()

2.Sortir anormalement

a. Appelez pour la fonction

b. Le processus reçoit un signal et le signal entraîne la fin du programme.

Quelle que soit la méthode de sortie utilisée, le système finira par exécuter le même code dans le noyau. Ce code est utilisé pour fermer le descripteur de fichier ouvert utilisé par le processus et libérer la mémoire et les autres ressources qu'il occupe.

Comparaison de plusieurs méthodes de sortie

1. La différence entre la sortie et le retour :

exit est une fonction avec des paramètres. Une fois la sortie exécutée, le contrôle est transféré au système

return est le retour après l'exécution de la fonction. Une fois le retour exécuté, le contrôle est transféré à la fonction appelante.

2. La différence entre la sortie et l'abandon :

la sortie est la fin normale du processus

about est une terminaison anormale.

Fonctions exit() et _exit()

Les fonctions exit et _exit sont toutes deux utilisées pour terminer le processus. Lorsque le programme exécute exit ou _exit, le système arrête inconditionnellement toutes les opérations restantes, efface diverses structures de données et met fin à l'exécution du processus.

exit est déclaré dans le fichier d'en-tête stdlib.h, tandis que _exit() est déclaré dans le fichier d'en-tête unistd.h. Le paramètre exit_code dans exit est 0, ce qui signifie que le processus se termine normalement. S'il s'agit d'autres valeurs, cela signifie qu'une erreur s'est produite lors de l'exécution du programme.

La différence entre exit() et _exit()

_exit() retourne au noyau immédiatement après l'exécution, tandis que exit() effectue d'abord quelques opérations de nettoyage, puis confie le contrôle au noyau.

Lorsque la fonction _exit est appelée, elle fermera tous les descripteurs de fichiers du processus, nettoiera la mémoire et certaines autres fonctions de nettoyage du noyau, mais ne rafraîchira pas le flux (stdin, stdout, stderr...). au-dessus de la fonction _exit Un wrapper qui appelle _exit et vide le flux avant de l'appeler.

La plus grande différence entre la fonction exit() et la fonction _exit() est que la fonction exit() vérifie l'état d'ouverture du fichier et réécrit le contenu du tampon de fichier dans le fichier avant d'appeler le système de sortie. Parce qu'il existe une opération appelée « E/S tamponnées » dans la bibliothèque de fonctions standard Linux, sa caractéristique est qu'il existe un tampon dans la mémoire correspondant à chaque fichier ouvert. Chaque fois qu'un fichier est lu, plusieurs enregistrements seront lus en continu, de sorte que la prochaine fois que le fichier sera lu, il pourra être lu directement à partir de la mémoire tampon, de la même manière, chaque fois qu'un fichier est écrit, il est uniquement écrit dans la mémoire ; tampon. Lorsque certaines conditions sont remplies (comme atteindre un certain nombre ou rencontrer des caractères spécifiques, etc.), le contenu du tampon est écrit immédiatement dans le fichier. Cette technologie augmente considérablement la vitesse de lecture et d'écriture des fichiers, mais elle pose également quelques problèmes de programmation. Par exemple, on pense que certaines données ont été écrites dans le fichier. En fait, comme elles ne remplissent pas de conditions spécifiques, elles sont uniquement enregistrées dans le tampon. À ce stade, utilisez la fonction _exit() pour fermer directement. le processus et les données dans le tampon seront perdues. Par conséquent, si vous souhaitez garantir l’intégrité des données, vous devez utiliser la fonction exit().

Voyons la différence entre eux à travers un exemple de fonction :

Exemple de fonction 1 : exit.c

#include
#include

int main()
{
printf("using exit----\n");
printf("This is the content in buffer\n");
exit(0);
}
Copier après la connexion

Le résultat de l'exécution est :

using exit----

This is the content in buffer
Copier après la connexion

Exemple de fonction 2 : _exit.c

#include
#include

int main()
{
printf("using _exit--\n");
printf("This is the content in buffer");
_exit(0);
}
Copier après la connexion

Le résultat de l'exécution est :

using _exit--
Copier après la connexion

La fonction printf utilise des E/S tamponnées. Cette fonction lit automatiquement l'enregistrement à partir du tampon lorsqu'elle rencontre le caractère de nouvelle ligne "n". Par conséquent, exit() se termine après avoir écrit les données dans le tampon, tandis que la fonction _exit() se termine directement.

Vous pouvez également modifier printf("This is the content in buffer"); dans l'instance de fonction 2 en printf("This is the content in buffern") (c'est-à-dire ajouter un n à la fin de printf pour voir quel est le résultat est. Pourquoi cela arrive-t-il ?)

L'ordre différent dans lequel les processus parent et enfant sont terminés produira des résultats différents

1. Le processus parent se termine avant le processus enfant :

Cette situation est le processus orphelin que nous avons utilisé plus tôt. Lorsque le processus parent se termine en premier, le système laisse le processus d'initialisation prendre le relais du processus enfant.

2. Le processus enfant se termine avant le processus parent, et le processus parent n'appelle pas la fonction d'attente

Dans ce cas, le processus enfant entre dans un état zombie et le restera jusqu'au redémarrage du système. Lorsque le processus enfant est dans un état zombie, le noyau enregistre uniquement certaines informations nécessaires sur le processus dont le processus parent a besoin. À ce stade, le processus enfant occupe toujours des ressources et réduit également le nombre maximum de processus que le système peut créer.

Quel est l'état du zombie ?

Un processus qui s'est terminé mais dont le processus parent n'a pas encore traité les conséquences (obtenir des informations sur le processus enfant terminé et libérer les ressources qu'il occupe encore) est appelé un processus zombie.

3. Le processus enfant se termine avant le processus parent, et le processus parent appelle la fonction d'attente

À ce stade, le processus parent attendra la fin du processus enfant.

Grâce à cet article, vous devez avoir une compréhension complète des méthodes de sortie des processus Linux et connaître leur définition, leurs principes, leur utilisation, leurs avantages et leurs inconvénients. Vous devez également comprendre les causes et les effets de la sortie de processus, ainsi que comment utiliser et sélectionner correctement les méthodes de sortie de processus sous Linux. Nous vous recommandons, lorsque vous utilisez un système Linux, d'utiliser des méthodes de sortie de processus appropriées pour mettre fin au processus afin d'améliorer la stabilité et l'efficacité du système. Dans le même temps, nous vous rappelons également de prêter attention à certains problèmes et défis potentiels lors de l'utilisation de la méthode de sortie de processus, tels que les processus zombies, les fuites de mémoire, la gestion des signaux, etc. J'espère que cet article pourra vous aider à mieux utiliser le système Linux et vous permettre de terminer le processus en douceur sous Linux.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Différence entre Centos et Ubuntu Différence entre Centos et Ubuntu Apr 14, 2025 pm 09:09 PM

Les principales différences entre Centos et Ubuntu sont: l'origine (Centos provient de Red Hat, pour les entreprises; Ubuntu provient de Debian, pour les particuliers), la gestion des packages (Centos utilise Yum, se concentrant sur la stabilité; Ubuntu utilise APT, pour une fréquence de mise à jour élevée), le cycle de support (CentOS fournit 10 ans de soutien, Ubuntu fournit un large soutien de LT tutoriels et documents), utilisations (Centos est biaisé vers les serveurs, Ubuntu convient aux serveurs et aux ordinateurs de bureau), d'autres différences incluent la simplicité de l'installation (Centos est mince)

Le choix de Centos après l'arrêt de l'entretien Le choix de Centos après l'arrêt de l'entretien Apr 14, 2025 pm 08:51 PM

CentOS a été interrompu, les alternatives comprennent: 1. Rocky Linux (meilleure compatibilité); 2. Almalinux (compatible avec CentOS); 3. Serveur Ubuntu (configuration requise); 4. Red Hat Enterprise Linux (version commerciale, licence payante); 5. Oracle Linux (compatible avec Centos et Rhel). Lors de la migration, les considérations sont: la compatibilité, la disponibilité, le soutien, le coût et le soutien communautaire.

Comment installer CentOS Comment installer CentOS Apr 14, 2025 pm 09:03 PM

Étapes d'installation de CentOS: Téléchargez l'image ISO et Burn Bootable Media; démarrer et sélectionner la source d'installation; sélectionnez la langue et la disposition du clavier; configurer le réseau; partitionner le disque dur; définir l'horloge système; créer l'utilisateur racine; sélectionnez le progiciel; démarrer l'installation; Redémarrez et démarrez à partir du disque dur une fois l'installation terminée.

Comment utiliser Docker Desktop Comment utiliser Docker Desktop Apr 15, 2025 am 11:45 AM

Comment utiliser Docker Desktop? Docker Desktop est un outil pour exécuter des conteneurs Docker sur les machines locales. Les étapes à utiliser incluent: 1. Installer Docker Desktop; 2. Démarrer Docker Desktop; 3. Créer une image Docker (à l'aide de DockerFile); 4. Build Docker Image (en utilisant Docker Build); 5. Exécuter Docker Container (à l'aide de Docker Run).

Explication détaillée du principe docker Explication détaillée du principe docker Apr 14, 2025 pm 11:57 PM

Docker utilise les fonctionnalités du noyau Linux pour fournir un environnement de fonctionnement d'application efficace et isolé. Son principe de travail est le suivant: 1. Le miroir est utilisé comme modèle en lecture seule, qui contient tout ce dont vous avez besoin pour exécuter l'application; 2. Le Système de fichiers Union (UnionFS) empile plusieurs systèmes de fichiers, ne stockant que les différences, l'économie d'espace et l'accélération; 3. Le démon gère les miroirs et les conteneurs, et le client les utilise pour l'interaction; 4. Les espaces de noms et les CGROUP implémentent l'isolement des conteneurs et les limitations de ressources; 5. Modes de réseau multiples prennent en charge l'interconnexion du conteneur. Ce n'est qu'en comprenant ces concepts principaux que vous pouvez mieux utiliser Docker.

Comment afficher le processus Docker Comment afficher le processus Docker Apr 15, 2025 am 11:48 AM

Méthode de visualisation du processus docker: 1. Commande Docker CLI: Docker PS; 2. Commande CLI Systemd: Docker d'état SystemCTL; 3. Docker Compose CLI Commande: Docker-Compose PS; 4. Process Explorer (Windows); 5. / Répertoire proc (Linux).

Quelle configuration de l'ordinateur est requise pour VScode Quelle configuration de l'ordinateur est requise pour VScode Apr 15, 2025 pm 09:48 PM

Vs Code Système Exigences: Système d'exploitation: Windows 10 et supérieur, MacOS 10.12 et supérieur, processeur de distribution Linux: minimum 1,6 GHz, recommandé 2,0 GHz et au-dessus de la mémoire: minimum 512 Mo, recommandée 4 Go et plus d'espace de stockage: Minimum 250 Mo, recommandée 1 Go et plus d'autres exigences: connexion du réseau stable, xorg / wayland (Linux) recommandé et recommandée et plus

Que faire si l'image Docker échoue Que faire si l'image Docker échoue Apr 15, 2025 am 11:21 AM

Dépannage des étapes pour la construction d'image Docker échouée: cochez la syntaxe Dockerfile et la version de dépendance. Vérifiez si le contexte de construction contient le code source et les dépendances requis. Affichez le journal de construction pour les détails d'erreur. Utilisez l'option - cibler pour créer une phase hiérarchique pour identifier les points de défaillance. Assurez-vous d'utiliser la dernière version de Docker Engine. Créez l'image avec --t [Image-Name]: Debug Mode pour déboguer le problème. Vérifiez l'espace disque et assurez-vous qu'il est suffisant. Désactivez SELINUX pour éviter les interférences avec le processus de construction. Demandez de l'aide aux plateformes communautaires, fournissez Dockerfiles et créez des descriptions de journaux pour des suggestions plus spécifiques.

See all articles