GNU/Linux >> Tutoriels Linux >  >> Linux

Meilleur remplacement pour exit(), atexit() en C

quelle est la meilleure façon possible de terminer le processus

  1. Si vous optez pour un seul thread, utilisez simplement exit() , car votre code n'est pas multithread.
  2. Sinon, assurez-vous que tous les threads sauf un se sont terminés avant le dernier, puis appelez en toute sécurité exit() à cause de 1. ci-dessus.

Étant donné que les pannes d'alimentation/matériel peuvent survenir à tout moment, l'impossibilité... l'extrême difficulté de terminer de manière fiable les threads avec le code utilisateur et la nature chaotique de l'utilisation des pools de mémoire, etc. dans de nombreuses applications multithread non triviales, il est préférable de concevoir applications et systèmes qui peuvent nettoyer les fichiers temporaires, etc. au démarrage, plutôt que d'essayer de micro-gérer l'arrêt.

"Nettoyez toutes les ressources que vous allouez avant de quitter" ressemble à un bon conseil dans une salle de classe ou une conférence, mais devient rapidement toute une chaîne d'albatros autour de votre cou face à une douzaine de threads, de files d'attente et de pools dans un système dynamique en constante évolution.

Si vous le pouvez, si vous utilisez un système d'exploitation non trivial, laissez-le faire son travail et nettoyer pour vous. C'est bien meilleur que votre code d'utilisateur ne le sera jamais.


Linux
  1. Utilisez anacron pour une meilleure crontab

  2. Linux vs Windows :quel système d'exploitation est le meilleur pour les jeux sur PC

  3. Comment rechercher les codes de sortie pour les applications ?

  4. Raccourcis de remplacement pour `screen` ?

  5. Obtenez le code source pour n'importe quelle commande Linux

3 outils en ligne de commande pour simuler la productivité

10+ meilleurs IDE Python pour Linux

Exa - Un remplacement moderne pour la commande ls

Zorin OS 15 Lite - Le meilleur remplacement pour Windows 7

Exa - Un remplacement moderne de la commande ls

Invite Bash avec le dernier code de sortie