1. Les concepts de groupe de processus, de travail et de session
1. Groupe de processus : c'est un ensemble d'un ou plusieurs processus. Typiquement, associés à un même travail, différents signaux provenant du même terminal peuvent être reçus. Chaque processus possède un ID de groupe de processus unique. Chaque groupe de processus peut avoir un processus leader. L'identité du processus chef de groupe est que son ID de groupe de processus est égal à son ID de processus. Le processus chef de groupe peut créer un groupe de processus, créer les processus dans le groupe, puis y mettre fin. Tant qu'il existe un processus dans un groupe de processus, le groupe de processus existe, que le processus chef de groupe se termine ou non.
2. Job : Shell est divisé en front et backend pour contrôler non pas le processus mais le travail (job) ou le groupe de processus. Une tâche de premier plan peut être composée de plusieurs processus, et une tâche d'arrière-plan peut également être composée de plusieurs processus. Le shell peut exécuter une tâche de premier plan et un nombre illimité de tâches en arrière-plan, appelées contrôle des tâches.
La différence entre un travail et un groupe de processus : Si un processus dans le travail crée un processus enfant, le processus enfant n'appartient pas au travail.
Une fois le travail terminé, le Shell se mettra au premier plan. Si le processus de premier plan d'origine existe toujours (si le processus enfant n'a pas été terminé), il deviendra automatiquement un groupe de processus en arrière-plan.
3. Session : Il s'agit d'un ensemble d'un ou plusieurs groupes de processus. Une session peut avoir un terminal de contrôle. Le processus initial de session qui établit une connexion avec le terminal de contrôle est appelé processus de contrôle. Plusieurs groupes de processus dans une session peuvent être divisés en un groupe de processus de premier plan et un ou plusieurs groupes de processus d'arrière-plan. Par conséquent, une session doit inclure le processus de contrôle (le premier processus de la session), un groupe de processus de premier plan et tout groupe de processus d'arrière-plan.
****************** (Le groupe de processus équivaut à une classe, et le chef de groupe est équivalent au chef d'équipe. La conversation équivaut à une note. Chaque note dispose d'un Bureau des Affaires Académiques (terminal de contrôle)).
2. Terminal
1. Le concept de terminal : Une fois que l'utilisateur s'est connecté au système via le terminal, il obtient un processus Shell. Ce terminal est appelé le terminal de contrôle du processus Shell
Chacun. le processus peut transmettre un fichier de périphérique spécial /dev/tty pour accéder à son terminal de contrôle. En fait, chaque périphérique terminal
correspond à un fichier de périphérique différent. /dev/tty fournit une interface universelle. Un processus peut accéder à son terminal de contrôle via /dev/tty ou via le fichier de périphérique correspondant. La fonction ttyname peut trouver le nom de fichier correspondant à partir du descripteur de fichier. Le descripteur de fichier doit pointer vers un périphérique terminal et non vers n'importe quel fichier.
******************Vérifiez les noms de fichiers de périphériques correspondant aux différents terminaux.
1 #include<stdio.h> 2 #include<unistd.h> 3 int main() 4 { 5 printf("fd: %d -> %s\n",0,ttyname(0)); 6 printf("fd: %d -> %s\n",1,ttyname(1)); 7 printf("fd: %d -> %s\n",2,ttyname(2)); 8 }
2. Processus de connexion au terminal :
Un PC n'a généralement qu'un seul ensemble de clavier et de moniteur, c'est-à-dire un seul ensemble d'équipements terminaux, mais il peut être activé par Ctrl-Alt-F1~ Ctrl-Alt-F6 Les terminaux à 6 caractères sont équivalents à 6 ensembles de terminaux virtuels. Ils partagent le même ensemble de terminaux physiques. Les fichiers de périphériques correspondants sont /dev/tty1~/dev/tty6, ils sont donc appelés terminaux virtuels. Le fichier de périphérique /dev/tty0 représente le terminal virtuel actuel. Par exemple, lors du passage au terminal caractère de Ctrl-Alt-F1, /dev/tty0 représente /dev/tty1 Lors du passage au terminal caractère de Ctrl-Alt-. F2, /dev/tty0 représente Représente /dev/tty2, qui est une interface universelle tout comme /dev/tty, mais elle ne peut pas représenter le terminal correspondant à la fenêtre du terminal graphique.
a. Lorsque le système démarre, le processus d'initialisation détermine quels terminaux doivent être ouverts en fonction du fichier de configuration /etc/inittab.
b. Getty ouvre le terminal comme terminal de contrôle en fonction des paramètres de ligne de commande, pointe les descripteurs de fichiers 0, 1 et 2 vers le terminal de contrôle
, puis invite l'utilisateur à saisir un compte. Une fois que l'utilisateur a accédé au compte, la tâche de getty est terminée et il exécute le programme de connexion :
execle("/bin/login", "login", "-p", username, NULL, envp);
c . Le programme de connexion invite l'utilisateur à saisir un mot de passe (désactive l'écho du terminal lors de la saisie du mot de passe), puis vérifie l'exactitude du mot de passe du compte. Si le mot de passe est incorrect, le processus de connexion est terminé et init relancera/exécutera un processus getty. Si le mot de passe est correct, le programme de connexion définit certaines variables d'environnement, définit le répertoire de travail actuel sur le répertoire personnel de l'utilisateur, puis exécute Shell:
execl("/bin/bash", "-bash", NULL);
Troisièmement, Processus démon
1 Le processus démon, également appelé processus démon, est un processus spécial exécuté en arrière-plan. Il est indépendant du terminal de contrôle et exécute périodiquement une tâche ou attend qu'un événement se produise.
2. Utilisez ps axj | grep -E 'd$' pour afficher le processus démon
Le paramètre a indique que non seulement les processus de l'utilisateur actuel sont répertoriés, mais également les processus de tous les autres utilisateurs, et le paramètre x indique que non seulement les processus du terminal de contrôle sont répertoriés. Processus répertorie également tous les processus sans terminaux de contrôle. Le paramètre j indique la liste des informations relatives au contrôle des tâches.
3. Créez un processus démon
Appelez la fonction setsid pour créer une nouvelle session et devenez le leader de la session (le premier processus de la session). Si l'appel réussit, l'identifiant de session nouvellement créé le sera. être renvoyé. Si une erreur se produit, -1 sera renvoyé ;
a. Appelez umask pour définir le mot du masque de création du mode fichier sur 0.
b. ). Raisons :
1) Si le démon est démarré en tant que simple commande shell, alors la fin du processus parent fait penser au shell que la commande a été exécutée.
2) Assurez-vous que le processus enfant n'est pas le processus leader d'un groupe de processus.
c. Appelez setsid pour créer une nouvelle session. setsid provoquera :
1) Le processus appelant devient le premier processus de la nouvelle session.
2) Le processus appelant devient le processus leader d'un groupe de processus.
3) Le processus appelant n'a pas de terminal de contrôle. (Fork à nouveau pour s'assurer que le processus démon n'ouvrira pas le périphérique tty par la suite)
d Remplacez le répertoire de travail actuel par le répertoire racine.
e. Fermez les descripteurs de fichiers qui ne sont plus nécessaires.
f.Autres : ignorez le signal SIGCHLD.
#include<stdio.h> 2 #include<stdlib.h> 3 #include<unistd.h> 4 void mydeamon(void) 5 { 6 pid_t id=fork(); 7 umask(0);//将文件模式创建屏蔽字设置为0. 8 if(id>0) 9 { 10 exit(0);//调用fork,父进程退出(exit) 11 } 12 setsid();//调用setsid创建一个新会话 13 chdir("/");//将当前工作目录更改为根目录。 14 close(0);//关闭不在需要的文件描述符。 15 close(1); 16 close(2); 17 } 18 int main() 19 { 20 mydeamon(); 21 while(1); 22 return 0; 23 }
Utilisez ps axj | grep "nom de fichier" pour afficher le processus démon qui vient d'être créé
Ce qui précède est Linux - terminal, contrôle des tâches , et Le contenu du processus démon, veuillez faire attention au site Web PHP chinois (www.php.cn) pour plus de contenu connexe !

Le type PHP invite à améliorer la qualité et la lisibilité du code. 1) Conseils de type scalaire: Depuis PHP7.0, les types de données de base sont autorisés à être spécifiés dans les paramètres de fonction, tels que INT, Float, etc. 2) Invite de type de retour: Assurez la cohérence du type de valeur de retour de fonction. 3) Invite de type d'union: Depuis PHP8.0, plusieurs types peuvent être spécifiés dans les paramètres de fonction ou les valeurs de retour. 4) Invite de type nullable: permet d'inclure des valeurs nulles et de gérer les fonctions qui peuvent renvoyer les valeurs nulles.

Dans PHP, utilisez le mot-clé Clone pour créer une copie de l'objet et personnalisez le comportement de clonage via la méthode de magie du clone \ _ \ _. 1. Utilisez le mot-clé Clone pour faire une copie peu profonde, en clonant les propriétés de l'objet mais pas aux propriétés de l'objet. 2. La méthode du clone \ _ \ _ peut copier profondément les objets imbriqués pour éviter les problèmes de copie superficiels. 3. Faites attention pour éviter les références circulaires et les problèmes de performance dans le clonage et optimiser les opérations de clonage pour améliorer l'efficacité.

PHP convient aux systèmes de développement Web et de gestion de contenu, et Python convient aux scripts de science des données, d'apprentissage automatique et d'automatisation. 1.Php fonctionne bien dans la création de sites Web et d'applications rapides et évolutifs et est couramment utilisé dans CMS tel que WordPress. 2. Python a permis de manière remarquable dans les domaines de la science des données et de l'apprentissage automatique, avec des bibliothèques riches telles que Numpy et Tensorflow.

Les acteurs clés des en-têtes de cache HTTP incluent le contrôle du cache, l'ETAG et la dernière modification. 1.CACHE-Control est utilisé pour contrôler les politiques de mise en cache. Exemple: Cache-Control: Max-Age = 3600, public. 2. Etag vérifie les changements de ressources par le biais d'identifiants uniques, exemple: ETAG: "686897696A7C876B7E". 3.Last-modifié indique le dernier temps de modification de la ressource, exemple: dernier modifié: mer, 21oct201507: 28: 00gmt.

Dans PHP, Password_Hash et Password_verify Les fonctions doivent être utilisées pour implémenter le hachage de mot de passe sécurisé, et MD5 ou SHA1 ne doit pas être utilisé. 1) Password_hash génère un hachage contenant des valeurs de sel pour améliorer la sécurité. 2) Password_verify Vérifiez le mot de passe et assurez-vous la sécurité en comparant les valeurs de hachage. 3) MD5 et SHA1 sont vulnérables et manquent de valeurs de sel, et ne conviennent pas à la sécurité de mot de passe moderne.

PHP est un langage de script côté serveur utilisé pour le développement Web dynamique et les applications côté serveur. 1.Php est un langage interprété qui ne nécessite pas de compilation et convient au développement rapide. 2. Le code PHP est intégré à HTML, ce qui facilite le développement de pages Web. 3. PHP traite la logique côté serveur, génère une sortie HTML et prend en charge l'interaction utilisateur et le traitement des données. 4. PHP peut interagir avec la base de données, traiter la soumission du formulaire et exécuter les tâches côté serveur.

PHP a façonné le réseau au cours des dernières décennies et continuera de jouer un rôle important dans le développement Web. 1) PHP est originaire de 1994 et est devenu le premier choix pour les développeurs en raison de sa facilité d'utilisation et de son intégration transparente avec MySQL. 2) Ses fonctions principales incluent la génération de contenu dynamique et l'intégration à la base de données, ce qui permet au site Web d'être mis à jour en temps réel et affiché de manière personnalisée. 3) La large application et l'écosystème de PHP ont motivé son impact à long terme, mais il fait également face à des mises à jour de version et à des défis de sécurité. 4) Les améliorations des performances ces dernières années, telles que la sortie de PHP7, lui permettent de rivaliser avec les langues modernes. 5) À l'avenir, PHP doit faire face à de nouveaux défis tels que la conteneurisation et les microservices, mais sa flexibilité et sa communauté active le rendent adaptable.

Les principaux avantages du PHP comprennent la facilité d'apprentissage, un soutien solide sur le développement Web, les bibliothèques et les cadres riches, les performances élevées et l'évolutivité, la compatibilité multiplateforme et la rentabilité. 1) Facile à apprendre et à utiliser, adapté aux débutants; 2) une bonne intégration avec les serveurs Web et prend en charge plusieurs bases de données; 3) ont des cadres puissants tels que Laravel; 4) Des performances élevées peuvent être obtenues grâce à l'optimisation; 5) prendre en charge plusieurs systèmes d'exploitation; 6) Open source pour réduire les coûts de développement.


Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Version crackée d'EditPlus en chinois
Petite taille, coloration syntaxique, ne prend pas en charge la fonction d'invite de code

Version Mac de WebStorm
Outils de développement JavaScript utiles

Navigateur d'examen sécurisé
Safe Exam Browser est un environnement de navigation sécurisé permettant de passer des examens en ligne en toute sécurité. Ce logiciel transforme n'importe quel ordinateur en poste de travail sécurisé. Il contrôle l'accès à n'importe quel utilitaire et empêche les étudiants d'utiliser des ressources non autorisées.

SublimeText3 version anglaise
Recommandé : version Win, prend en charge les invites de code !

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP