Compare commits
No commits in common. "646e3aacc9bbfa136eda6bd3340195d0c4962675" and "1c8ce9899cd843cdfb5d082682ad194d1ae0e49d" have entirely different histories.
646e3aacc9
...
1c8ce9899c
2
.gitignore
vendored
2
.gitignore
vendored
@ -20,7 +20,7 @@ code/ex_curses
|
|||||||
code/hello
|
code/hello
|
||||||
code/arguments
|
code/arguments
|
||||||
code/no-op
|
code/no-op
|
||||||
code/get-signal
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
49
chap/IPC.tex
49
chap/IPC.tex
@ -4,53 +4,24 @@
|
|||||||
\textit{Inter Process Communication.}
|
\textit{Inter Process Communication.}
|
||||||
|
|
||||||
Il existe deux familles bien distinctes. Nous allons donc
|
Il existe deux familles bien distinctes. Nous allons donc
|
||||||
les voir dans le plus grand des désordres.
|
les voir dans le désordre.
|
||||||
|
|
||||||
% ================================================================
|
|
||||||
|
|
||||||
\section{Signal} \index{signal}
|
|
||||||
|
|
||||||
nous allonc commencer par le plus simple mécanisme d'IPC~:
|
|
||||||
le signal.
|
|
||||||
Et pour ça, nous allons utiliser (encore une fois ?) un exemple
|
|
||||||
futile, certes, mais simple à comprendre.
|
|
||||||
|
|
||||||
Nous avons un programme qui tourne en boucle en effectuant des
|
|
||||||
taches complexes (simulées pour l'exemple par une nanosieste) et
|
|
||||||
nous souhaitons pouvoir lui demander d'afficher l'avancée de la
|
|
||||||
chose.
|
|
||||||
|
|
||||||
\label{get-signal}
|
|
||||||
\lstinputlisting[language=c]{code/get-signal.c}
|
|
||||||
|
|
||||||
\begin{verbatim}
|
|
||||||
fubar $ make get-signal
|
|
||||||
gcc -Wall get-signal.c -o get-signal
|
|
||||||
fubar $ ./get-signal &
|
|
||||||
[1] 14001
|
|
||||||
fubar $ kill me, my pid is 14001
|
|
||||||
kill -USR1 14001
|
|
||||||
fubar $ count is 15
|
|
||||||
kill -USR1 14001
|
|
||||||
fubar $ count is 22
|
|
||||||
kill %1
|
|
||||||
fubar $
|
|
||||||
[1]+ Terminated ./get-signal
|
|
||||||
fubar $
|
|
||||||
\end{verbatim}
|
|
||||||
|
|
||||||
% ================================================================
|
|
||||||
|
|
||||||
|
|
||||||
% ================================================================
|
% ================================================================
|
||||||
|
|
||||||
\section{shared memory} \index{shared}
|
\section{shared memory} \index{shared}
|
||||||
|
|
||||||
Mémoire partagée.
|
|
||||||
|
|
||||||
% ================================================================
|
% ================================================================
|
||||||
|
|
||||||
\section{named pipe}
|
\section{named pipe}
|
||||||
|
|
||||||
Tube nommé.
|
% ================================================================
|
||||||
|
|
||||||
|
\section{Signals} \index{signal}
|
||||||
|
|
||||||
|
Non, on ne va pas parler du potentiel remplaçant de Whatsapp,
|
||||||
|
mais du plus simple mécanispe d'IPC.
|
||||||
|
|
||||||
|
% ================================================================
|
||||||
|
|
||||||
|
|
||||||
|
@ -19,5 +19,3 @@ arguments: arguments.c Makefile
|
|||||||
no-op: no-op.c Makefile
|
no-op: no-op.c Makefile
|
||||||
gcc -Wall $< -o $@
|
gcc -Wall $< -o $@
|
||||||
|
|
||||||
get-signal: get-signal.c Makefile
|
|
||||||
gcc -Wall $< -o $@
|
|
||||||
|
@ -1,30 +0,0 @@
|
|||||||
/* get-signal.c */
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <signal.h>
|
|
||||||
|
|
||||||
volatile int drapeau;
|
|
||||||
|
|
||||||
void attraper(int value)
|
|
||||||
{
|
|
||||||
drapeau = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
|
||||||
{
|
|
||||||
int foo;
|
|
||||||
|
|
||||||
printf("kill me, my pid is %d\n", getpid());
|
|
||||||
signal(SIGUSR1, attraper);
|
|
||||||
|
|
||||||
for (foo=0; foo<1337; foo++) {
|
|
||||||
if (drapeau) {
|
|
||||||
printf("count is %d\n", foo);
|
|
||||||
drapeau = 0;
|
|
||||||
}
|
|
||||||
sleep(1); /* simulate heavy computing */
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
8
main.tex
8
main.tex
@ -151,14 +151,8 @@ en ligne sur le site du Tetalab. Your mileage may vary\dots
|
|||||||
|
|
||||||
\chapter{On est bientôt arrivé ?}
|
\chapter{On est bientôt arrivé ?}
|
||||||
|
|
||||||
\textbf{Non, la route est longue, mais la voie est libre.}
|
Non, la route est longue, mais la voie est libre.
|
||||||
|
|
||||||
Si vous êtes arrivés jusque ici, c'est que vous avez (peut-être ?)
|
|
||||||
parcouru cet ouvrage, et constaté à quel point il est en friche.
|
|
||||||
Beaucoup de chapitres sont vraiment incomplets, voire cruellement
|
|
||||||
vides, ou même obsolètes à un niveau pitoyable.
|
|
||||||
|
|
||||||
Mais les choses vont évoluer, peut-être, un jour\dots
|
|
||||||
|
|
||||||
\printindex
|
\printindex
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user