bla
This commit is contained in:
parent
97f9196db6
commit
f5b9cf17dc
18
chap/IPC.tex
18
chap/IPC.tex
@ -96,6 +96,8 @@ Ce marqueur temporel sera obtenu par l'appel à
|
|||||||
pour tenter d'avoir une précision
|
pour tenter d'avoir une précision
|
||||||
significative.
|
significative.
|
||||||
|
|
||||||
|
% ----------------------------------------------------------------
|
||||||
|
|
||||||
\subsection{Émetteur}
|
\subsection{Émetteur}
|
||||||
|
|
||||||
Son role est simple~: il met le timestamp dans l'enveloppe, et
|
Son role est simple~: il met le timestamp dans l'enveloppe, et
|
||||||
@ -103,6 +105,11 @@ la poste vers l'adresse qu'on lui passe sur la ligne de commande.
|
|||||||
|
|
||||||
\lstinputlisting[language=c]{code/fifo-tx.c}
|
\lstinputlisting[language=c]{code/fifo-tx.c}
|
||||||
|
|
||||||
|
Vous remarquerez que nous nettoyons le message avant utilisation
|
||||||
|
avec un \texttt{memset(3)}, une étape trop souvent oubliée.
|
||||||
|
|
||||||
|
% ----------------------------------------------------------------
|
||||||
|
|
||||||
\subsection{Récepteur}
|
\subsection{Récepteur}
|
||||||
|
|
||||||
Pour faire simple, le récepteur des messages va passer l'intégralité
|
Pour faire simple, le récepteur des messages va passer l'intégralité
|
||||||
@ -115,7 +122,12 @@ Sauf que ça n'est pas tout à fait ça.
|
|||||||
\lstinputlisting[language=c]{code/fifo-rx.c}
|
\lstinputlisting[language=c]{code/fifo-rx.c}
|
||||||
|
|
||||||
J'avoue ne pas avoir encore bien capté le deuxième argument
|
J'avoue ne pas avoir encore bien capté le deuxième argument
|
||||||
de mkfifo\dots
|
de mkfifo, mais la lecture de
|
||||||
|
\texttt{fifo(7)} et de \texttt{pipe(7)} peut être
|
||||||
|
utile pour comprendre\footnote{modulo les références circulaires.}
|
||||||
|
la chose\dots
|
||||||
|
|
||||||
|
% ----------------------------------------------------------------
|
||||||
|
|
||||||
\subsection{Timestamp} \index{timestamp}
|
\subsection{Timestamp} \index{timestamp}
|
||||||
|
|
||||||
@ -136,6 +148,8 @@ the system time). If you need a monotonically increasing clock, see
|
|||||||
clock\_gettime(2).
|
clock\_gettime(2).
|
||||||
\end{quote}
|
\end{quote}
|
||||||
|
|
||||||
|
% ----------------------------------------------------------------
|
||||||
|
|
||||||
\subsection{Message}
|
\subsection{Message}
|
||||||
|
|
||||||
Pour des raisons pas si évidente que ça, les messages transmis
|
Pour des raisons pas si évidente que ça, les messages transmis
|
||||||
@ -146,6 +160,8 @@ une structure (page ???) contenant les données à transmettre.
|
|||||||
|
|
||||||
C'est rudimentaire, mais ça fera l'affaire pour claquer un Bonaldi.
|
C'est rudimentaire, mais ça fera l'affaire pour claquer un Bonaldi.
|
||||||
|
|
||||||
|
% ----------------------------------------------------------------
|
||||||
|
|
||||||
% ================================================================
|
% ================================================================
|
||||||
|
|
||||||
|
|
||||||
|
@ -24,6 +24,8 @@ no-op: no-op.c Makefile
|
|||||||
get-signal: get-signal.c Makefile
|
get-signal: get-signal.c Makefile
|
||||||
gcc -Wall $< -o $@
|
gcc -Wall $< -o $@
|
||||||
|
|
||||||
|
fifo: fifo-rx fifo-tx
|
||||||
|
|
||||||
dtime.o: dtime.c my-fifo.h Makefile
|
dtime.o: dtime.c my-fifo.h Makefile
|
||||||
gcc -Wall -c $<
|
gcc -Wall -c $<
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
#include <sys/time.h>
|
#include <sys/time.h>
|
||||||
|
#include "my-fifo.h"
|
||||||
double dtime(void)
|
double dtime(void)
|
||||||
{
|
{
|
||||||
struct timeval tv;
|
struct timeval tv;
|
||||||
|
@ -13,9 +13,12 @@ int fifo;
|
|||||||
Message message;
|
Message message;
|
||||||
double localTS;
|
double localTS;
|
||||||
|
|
||||||
if (argc!=2) exit(1);
|
if (argc!=2) {
|
||||||
fifo = mkfifo(argv[1], 0400);
|
fprintf(stderr, "%s need a fifo name\n", argv[0]);
|
||||||
if (fifo) {
|
exit(1);
|
||||||
|
}
|
||||||
|
fifo = mkfifo(argv[1], O_RDONLY|O_CREAT);
|
||||||
|
if (-1==fifo) {
|
||||||
perror("mkfifo fail");
|
perror("mkfifo fail");
|
||||||
exit(2);
|
exit(2);
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
/*** named pipe --- transmiter ***/
|
/*** named pipe --- transmiter ***/
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include "my-fifo.h"
|
#include "my-fifo.h"
|
||||||
@ -15,6 +16,7 @@ if (-1==(fifo = open(argv[1], O_WRONLY))) {
|
|||||||
perror("open fifo for wr");
|
perror("open fifo for wr");
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
memset(&message, 0, sizeof(Message));
|
||||||
message.pid = getpid();
|
message.pid = getpid();
|
||||||
message.timestamp = dtime();
|
message.timestamp = dtime();
|
||||||
write(fifo, &message, sizeof(Message));
|
write(fifo, &message, sizeof(Message));
|
||||||
|
Loading…
Reference in New Issue
Block a user