Compare commits

..

2 커밋

작성자 SHA1 메시지 날짜
tth
646e3aacc9 + exemple ipc/signal 2021-08-18 09:49:28 +02:00
tth
b56f05cd3c + conclusion 2021-08-18 09:16:24 +02:00
5개의 변경된 파일79개의 추가작업 그리고 12개의 파일을 삭제

2
.gitignore vendored
파일 보기

@ -20,7 +20,7 @@ code/ex_curses
code/hello
code/arguments
code/no-op
code/get-signal

파일 보기

@ -4,24 +4,53 @@
\textit{Inter Process Communication.}
Il existe deux familles bien distinctes. Nous allons donc
les voir dans le désordre.
les voir dans le plus grand des désordres.
% ================================================================
\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}
Mémoire partagée.
% ================================================================
\section{named pipe}
% ================================================================
\section{Signals} \index{signal}
Non, on ne va pas parler du potentiel remplaçant de Whatsapp,
mais du plus simple mécanispe d'IPC.
% ================================================================
Tube nommé.

파일 보기

@ -19,3 +19,5 @@ arguments: arguments.c Makefile
no-op: no-op.c Makefile
gcc -Wall $< -o $@
get-signal: get-signal.c Makefile
gcc -Wall $< -o $@

30
code/get-signal.c Normal file
파일 보기

@ -0,0 +1,30 @@
/* 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;
}

파일 보기

@ -151,8 +151,14 @@ en ligne sur le site du Tetalab. Your mileage may vary\dots
\chapter{On est bientôt arrivé ?}
Non, la route est longue, mais la voie est libre.
\textbf{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