Read /dev/null differs from POSIX

Bob Bishop rb at gid.co.uk
Sat May 21 13:14:48 PDT 2005


At 20:36 21/05/2005, Steve Kargl wrote:
> >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
>
>   #include <stdio.h>
>   int main(void) {
>      int i=0,j;
>      FILE *fp;
>      fp = fopen("/dev/null", "r");
>      while(fread(&j, sizeof(int), 1, fp) != 1) {
>        i++;
>        if (i == 5) break;
>      }
>      printf("i = %d\n", i);
>      if (j == EOF)
>        printf("EOF\n");
>      else
>        printf("j = %d\n", j);
>}
>
>prints
>
>i = 5
>j = 1
>
>Is this historic BSD defacto behavior?

When fread hits EOF, it doesn't write to j.

--
Bob Bishop		    +44 (0)118 940 1243
rb at gid.co.uk		fax +44 (0)118 940 1295



More information about the freebsd-standards mailing list