Read /dev/null differs from POSIX

Mark Murray markm at FreeBSD.ORG
Sat May 21 13:15:08 PDT 2005


Steve Kargl writes:
> >From http://www.opengroup.org/onlinepubs/009695399/toc.htm
> 
>    /dev/null -- An infinite data source and data sink.  Data
>    written to /dev/null shall be discarded.  Reads from
>    /dev/null shall always return end-of-file (EOF).
> 
> This program

... abuses fread(3) return values.

Try this:

[grovel] ~ 09:10 pm $ cat test.c
#include <stdio.h>

int
main(void)
{
        int i, j;
        FILE *fp;

        j = -1;
        fp = fopen("/dev/null", "r");
        while((i = fread(&j, sizeof(int), 1, fp))) {
                printf("i = %d\nj = %d\n", i, j);
                if (feof(fp))
                        break;
        }
        printf("AT END\ni = %d\nj = %d\n", i, j);

        return 0;
}
[grovel] ~ 09:10 pm $ gcc -Wall test.c -o test
[grovel] ~ 09:11 pm $ ./test
AT END
i = 0
j = -1
[grovel] ~ 09:11 pm $

M
--
Mark Murray
iumop ap!sdn w,I idlaH




More information about the freebsd-standards mailing list