aboutsummaryrefslogtreecommitdiffstats
path: root/c/ptest.c
blob: 88b7d307837066c16139d4eb6f77be3cdb878f37 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include "gbos.h"
/* ptest: exercise the kernel pipe in one process - write some bytes, read them
   back, then close the write end and confirm the reader sees EOF. */
void main(void) {
    unsigned char pr = pipe();
    unsigned char pw = pr + 1;
    int c;
    if (pr == NOFD) { puts("pipe: none free"); nl(); return; }
    fputc(pw, 'H'); fputc(pw, 'i'); fputc(pw, '!');
    c = fgetc(pr); putc(c);
    c = fgetc(pr); putc(c);
    c = fgetc(pr); putc(c);
    nl();
    close(pw);                 /* last writer gone */
    c = fgetc(pr);
    if (c < 0) puts("EOF"); else { puts("got "); putc(c); }
    nl();
    close(pr);
}