add advanced section

This commit is contained in:
tTh 2024-02-22 20:08:21 +01:00
parent b1ebd390b4
commit f53ee92b02
1 changed files with 54 additions and 5 deletions

View File

@ -311,7 +311,7 @@ int fprintf(FILE *stream, const char *format, ...);
% =========================================================
\section{Un filtre Unix}\label{filtre-unix}
\section{Quelques filtres Unix}\label{filtre-unix}
Ce qu'on appelle un "filtre" est un logiciel destiné à transformer
les données qui le traversent. Pour bien comprendre, le mieux,
@ -336,14 +336,21 @@ $
\end{verbatim}
Vous voulez un autre exemple ? En voici un, parfois utile pour des
simulations de terminal de \textsl{h4ck3rZ}\footnote{texte vert ou
orange sur fond noir de rigueur.} sur une ligne en boucle de
simulations de terminal de \textsl{tipiak}\footnote{Le texte vert ou
orange sur fond noir est de rigueur.} sur une ligne en boucle de
courant à 300 Bauds, le tout pour un film que l'on souhaite classable
en série Z.
\lstinputlisting[language=c]{code/C/slowprint.c}
% \vspace{2em}
Vous prendrez bien soin de contempler le traitement d'un éventuel
paramètre passé par la ligne de commande,
et surtout le calcul alambiqué\footnote{On doit quand même
pouvoir faire plus clair\dots}
pour convertir une vitesse en Bauds à un délay acceptable
par \texttt{nanosleep(2)}.
\vspace{2em}
Pour une explication plus détaillée sur les mécanismes
utilisés et les usages possibles d'un tel filtre,
il faut voir le concept de pipeline du shell en
@ -684,6 +691,47 @@ types of devices.
% XXX EXEMPLE TROP MINIMALISTE !!!
%
% =========================================================
%
% Message-ID: <ur80s3$677$1@dont-email.me>
%
\section{Advanced}
Direct from Usenet (\texttt{comp.lang.c}):
\textsl{I did an experiment where is possible to create "sets" of warnings.}
\begin{verbatim}
#define SAFE_REGION \
_Pragma("GCC diagnostic push") \
_Pragma("GCC diagnostic error \"-Wenum-compare\"")\
_Pragma("GCC diagnostic error \"-Wparentheses\"")\
_Pragma("GCC diagnostic error \"-Wuninitialized\"")
#define RESTORE \
_Pragma("GCC diagnostic pop")
enum E1 { A };
enum E2 { B };
SAFE_REGION
int main() {
int a, b;
if (a = b){}
if (A == B){}
}
RESTORE
\end{verbatim}
\begin{quote}
J'avoue avoir mis un certain temps à capter. Je vais attendre
le \textsl{follow-up} de Bart pour avoir confirmation.
\end{quote}
% =========================================================
\section{La suite?}
% Message-ID: <657f1dd4$0$10079$426a74cc@news.free.fr>
% NNTP-Posting-Date: 17 Dec 2023 17:12:04 CET
Étudier les différents modêles de mémoire partagée.
% =========================================================
\section{Ailleurs dans cet ouvrage}
@ -693,7 +741,8 @@ divers comme Open Sound Control (page \pageref{chap:OSC}) ou
libsndfile (page \pageref{chap:son}).
Et pour les gens du système~:
l'utilisation des signaux (page \pageref{get-signal}),
le chargement dynamique d'un \textsl{plug-in} (page \pageref{ex_dlopen}).
le chargement dynamique d'un \textsl{plug-in} (page \pageref{ex_dlopen}),
les \texttt{ioctl}, \dots
% =========================================================