 
                            When fork()'ing file descriptors are copied between the two new processes and will cause concurrent operations to occur on the same file.
Non-Compliant Code Example
char c;
int pid;
int fd = open(filename,O_RDWR,0);
read(fd,&c,1);
pid = fork();
if(pid == 0)
Unknown macro: {/*child*/      read(fd,&c,1);      printf("child} 
else
Unknown macro: { /*parent*/      read(fd,&c,1);      printf("parent} 
This code's output cannot reliably be determined, and therefore should not be used. Instead, file descriptors should not be passed through a fork() call and should be closed beforehand to prevent this error.
complient code example:
char c;
int pid;
int fd = open(filename,O_RDWR,0);
read(fd,&c,1);
close(fd);
pid = fork();
if(pid == 0)
Unknown macro: {/*child*/      fd = open(filename,O_RDONLY,0);      read(fd,&c,1);      read(fd,&c,1);      printf("child} 
else
Unknown macro: { /*parent*/      fd = open(filename,O_RDWR,0);      read(fd,&c,1);      read(fd,&c,1);      printf("parent}