master
tth 1 year ago
parent 646e3aacc9
commit 5105779eb6
  1. 26
      chap/IPC.tex

@ -23,15 +23,16 @@ chose.
\label{get-signal}
\lstinputlisting[language=c]{code/get-signal.c}
Quand ce processus recevra le signal, la fonction \texttt{attraper}
sera appelée de façon \textsl{asynchrone} et positionnera le drapeau.
C'est dans le terme \textsl{asynchrone} que le diable a caché
les détails.
\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 $
@ -39,6 +40,23 @@ fubar $
fubar $
\end{verbatim}
Comme on peut le constater, le principe est simple. Un signal est
une interruption d'un processus qui, en dehors de sa présence, ne
transfère que peu d'information. Le principe est simple, d'accord,
mais la mise en œuvre l'est moins.
Cet exemple peut être considéré comme obsolète, et la
\textsl{manpage}\footnote{Mais qui lit le man, de nos jours ?}
confime bien.
\begin{quote}
The only portable use of signal() is to set a signal's disposition to
SIG\_DFL or SIG\_IGN. The semantics when using signal() to establish a
signal handler vary across systems (and POSIX.1 explicitly permits this
variation); \textbf{do not use it for this purpose}.
\end{quote}
Vous voilà prévenus, la suite bientôt\dots
% ================================================================

Loading…
Cancel
Save