Op school zijn we bezig een daemon gevalletje te schrijven die input via een fifo krijgt op het filesystem en aan de hand van wat daarin staat acties onderneemt. We zijn nog redelijk fris wat betreft C en C++, dus eerst maar simpel beginnen: het lezen van een fifo:
Ding loopt als een speer zo, maar klein (groot
) probleempje:
als ik wat naar die fifo stuur, blijft ie het steeds herhalen. Als de fifo leeg is zou ie toch moeten wachten bij die read toch?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| #include <stdio.h>
#include <fcntl.h>
#define BUFSIZE 1024
char buf[BUFSIZE];
int main() {
int first_fifo;
int n, c, d;
c = d = 0;
if ((first_fifo = open("/root/fifo", O_RDONLY)) < 0) {
fprintf(stderr, "Error opening /root/fifo\n");
exit(1);
}
while ( 1==1 ) {
n = read(first_fifo, buf, BUFSIZE);
printf("%s",buf);
}
} |
Ding loopt als een speer zo, maar klein (groot
als ik wat naar die fifo stuur, blijft ie het steeds herhalen. Als de fifo leeg is zou ie toch moeten wachten bij die read toch?