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
|
||||
significative.
|
||||
|
||||
% ----------------------------------------------------------------
|
||||
|
||||
\subsection{Émetteur}
|
||||
|
||||
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}
|
||||
|
||||
Vous remarquerez que nous nettoyons le message avant utilisation
|
||||
avec un \texttt{memset(3)}, une étape trop souvent oubliée.
|
||||
|
||||
% ----------------------------------------------------------------
|
||||
|
||||
\subsection{Récepteur}
|
||||
|
||||
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}
|
||||
|
||||
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}
|
||||
|
||||
@ -136,6 +148,8 @@ the system time). If you need a monotonically increasing clock, see
|
||||
clock\_gettime(2).
|
||||
\end{quote}
|
||||
|
||||
% ----------------------------------------------------------------
|
||||
|
||||
\subsection{Message}
|
||||
|
||||
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.
|
||||
|
||||
% ----------------------------------------------------------------
|
||||
|
||||
% ================================================================
|
||||
|
||||
|
||||
|
@ -24,6 +24,8 @@ no-op: no-op.c Makefile
|
||||
get-signal: get-signal.c Makefile
|
||||
gcc -Wall $< -o $@
|
||||
|
||||
fifo: fifo-rx fifo-tx
|
||||
|
||||
dtime.o: dtime.c my-fifo.h Makefile
|
||||
gcc -Wall -c $<
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
#include <stddef.h>
|
||||
#include <sys/time.h>
|
||||
|
||||
#include "my-fifo.h"
|
||||
double dtime(void)
|
||||
{
|
||||
struct timeval tv;
|
||||
|
@ -13,9 +13,12 @@ int fifo;
|
||||
Message message;
|
||||
double localTS;
|
||||
|
||||
if (argc!=2) exit(1);
|
||||
fifo = mkfifo(argv[1], 0400);
|
||||
if (fifo) {
|
||||
if (argc!=2) {
|
||||
fprintf(stderr, "%s need a fifo name\n", argv[0]);
|
||||
exit(1);
|
||||
}
|
||||
fifo = mkfifo(argv[1], O_RDONLY|O_CREAT);
|
||||
if (-1==fifo) {
|
||||
perror("mkfifo fail");
|
||||
exit(2);
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
/*** named pipe --- transmiter ***/
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
#include <fcntl.h>
|
||||
#include "my-fifo.h"
|
||||
@ -15,6 +16,7 @@ if (-1==(fifo = open(argv[1], O_WRONLY))) {
|
||||
perror("open fifo for wr");
|
||||
exit(1);
|
||||
}
|
||||
memset(&message, 0, sizeof(Message));
|
||||
message.pid = getpid();
|
||||
message.timestamp = dtime();
|
||||
write(fifo, &message, sizeof(Message));
|
||||
|
Loading…
Reference in New Issue
Block a user