Programmation LaTeX/Typographie et mise en forme du texte

Programmation C/Gestion des signaux
Les signaux permettent une communication, assez sommaire, entre le système et un processus, ou entre différents processus, gérée par le système d'exploitation.
Cette communication est sommaire, car un "signal" ne porte qu'une seule information: son numéro, de type codice_1.
Un processus reçoit un signal d'interruption quand l'utilisateur frappe une combinaison de touche particulière (Ctrl+C par exemple), ou un signal envoyé par le système (SIG_KILL par exemple quand le système demande au processus de s'arrêter).
Un processus peut aussi s'envoyer un signal à lui-même.
Ces signaux sont envoyés de manière "asynchrone": lorsqu'un processus reçoit un signal, son exécution est interrompue, et une fonction spécifique, dite "gestionnaire de signal", est appelée, avec en paramètre le numéro du signal reçu, pour traiter l'événement. Lorsque cette fonction se termine, le processus reprend là où il s'était arrêté.
C'est à chaque processus de déterminer ce qu'il fait quand il reçoit un signal de numéro donné, en définissant un gestionnaire de signal pour tous les signaux qu'il le souhaite. Vous l'aurez remarqué, dans tous les exemples de ce livre rencontrés jusqu'à présent, nous ne nous sommes pas occupés de savoir quels signaux nous pourrions recevoir, et comment il fallait les traiter. En l'absence de précisions dans nos programmes, l'implémentation fournira en effet un gestionnaire de signal par défaut, qui le plus souvent se contentera d'arrêter le programme.
Les fonctions suivantes, fournies par l'en-tête codice_2, sont utilisées dans la gestion des signaux :
Le C définit ces deux fonctions, et pas plus, alors que les signaux peuvent faire beaucoup plus... En particulier, aucune fonction pour envoyer un signal à un autre processus n'est définie. Cela est dû au fait que, sur certains systèmes, la notion de processus n'existe pas, et une seule tâche s'exécute. Dans de telles situations, il serait aberrant de demander à un compilateur C pour un tel système de fournir des moyens de communications inter-processus ! Par contre, les communications inter-processus étant chose courante dans de nombreux autres systèmes, des extensions fournissent des moyens de le faire (voir par exemple la fonction codice_5 définie dans POSIX, cf. le chapitre du livre Programmation POSIX).
Définir un gestionnaire de signal.
La fonction
void (*signal(int sig, void (*func)(int)))(int);
permet de définir un gestionnaire de signal. La signature de cette fonction étant un peu complexe, on peut la simplifier en utilisant un codice_6:
typedef void (*t_handler)(int);
t_handler signal(int sig, t_handler func);
Le comportement de signal() varie selon les versions d’Unix, et a aussi varié au cours du temps dans les différentes versions de Linux. Évitez de l’utiliser : utilisez plutôt sigaction(2).
Ainsi, on voit mieux comment fonctionne cette fonction (notez que le type codice_7 n'est pas défini par la norme, et n'est ici que pour clarifier la syntaxe). Elle prend deux paramètres:
Le premier paramètre est le numéro du signal. La norme définit un faible nombre de signaux, par des macros dans l'en-tête codice_2, par exemple codice_9 qui indique un accès illégal à la mémoire ("SEGmentation Violation"), et laisse à l'implémentation la liberté de définir d'autres types de signaux.
Pour le deuxième paramètre, on peut donner trois valeurs possibles:
Cette fonction renvoie la valeur du dernier gestionnaire de signal pour le numéro donné (qui peut être codice_10 ou codice_13).
En cas d'erreur, la fonction renvoie codice_18 et place la variable codice_19 à une valeur significative.
Les gestionnaires de signaux.
Les gestionnaires de signaux sont des fonctions au prototype simple :
void fonction(int);
Elles prennent un argument de type codice_1, qui est le numéro du signal, et ne renvoient rien. En effet, ces fonctions étant appelées de manière asynchrone, leur éventuelle valeur de retour ne serait récupérée, et encore utilisée, par personne...
Comme on utilise codice_21 pour associer à chaque numéro de signal une fonction qui va gérer les signaux de ce numéro, on pourrait penser qu'il n'est pas nécessaire de donner ce numéro en paramètre à la fonction. Cependant cela s'avère pratique, car on peut ainsi définir une seule fonction qui peut gérer plusieurs types de signaux, et dont le comportement variera en fonction du signal à traiter.
Voici un exemple simple de définition et de mise en place d'un gestionnaire de signaux, pour le type de signal codice_22, qui concerne des exceptions lors des calculs en virgule flottante ("Floating Point Exception"):
Le comportement de signal() varie selon les versions d’Unix, et a aussi varié au cours du temps dans les différentes versions de Linux. Évitez de l’utiliser : utilisez plutôt sigaction(2).
void sig_fpe(int sig)
 /* ... */
int main(void)
 if (signal(SIG_FPE, sig_fpe) == SIG_ERR)
 puts("Le gestionnaire de signal pour SIG_FPE n'a pu etre defini.");
 else
 puts("Le gestionnaire de signal pour SIG_FPE a pu etre defini.");
 /* ... */
 return 0;

Français/É et ER
La différence entre "é" et "ER" pour la terminaison des verbes.
La confusion est souvent faite du fait de la proximité de la sonorité orale des deux terminaisons.
Astuce.
Pour faire la différence entre les deux si un doute persiste on peut remplacer le verbe par un verbe du troisième groupe. En effet pour les verbes de ce groupe il n'existe pas de confusion dans la sonorité. 
Pour notre exemple on utilisera le verbe "mordre".
Un petit truc: 
"er" c'est faire, ( ou à faire ) assonnance:( er aire )= actif, il faut le faire.
"é" c'est fait assonnance:(é ait)- passif, passé, c'est fait.
Importance:
pour vos impôts ou aides:
"facture acquittée" = elle est ("é" ) acquittée
facture acquitter = (faute) est-elle à acquitter ( non encore payée) ou acquittée ( déjà payée ) ?
J'ai vu le problème, sur 10000 € pour cette erreur d' 1 lettre !

Algèbre/Nombres complexes
Un nombre formula_1 complexe est un nombre qui peut s'écrire formula_2 où formula_3 et formula_4 sont des nombres réels et formula_5 est l'imaginaire pur vérifiant formula_6.
Un tel nombre peut également s'écrire formula_7, formula_8 représente le module du nombre complexe et formula_9 son argument.
Par définition :
formula_10.
La particularité de formula_11, ensemble des nombres complexes est qu'il est algébriquement clos: tout polynôme à coefficient dans formula_11 est scindé sur formula_11.

Programmation C Introduction
Programmation C Bases du langage
Programmation C Types de base
Programmation C Classe de stockage
Programmation C Opérateurs
Programmation C Tests
Programmation C Itérations
Programmation C Fonctions et procédures
Programmation C Tableaux
Programmation C Pointeurs
Programmation C Types avancés
Programmation C Préprocesseur
Programmation C Bibliothèque standard
Programmation C Chaînes de caractères
Programmation C Entrées/sorties
Programmation C Erreurs
Programmation C Mathématiques
Programmation C Gestion de la mémoire
Programmation C Gestion des signaux
Programmation C Conclusion
Programmation C Bibliographie