I'd be less irritated if I didn't really need this, but it's still blocking, I've changed the code to the following (for the read_fifo)
Code:
FIFO_DATA *read_fifo( char filename[256] )
{
int fd, flags;
FILE * fp;
FIFO_DATA * fifo;
CREATE( fifo, FIFO_DATA, 1 );
if ( ( fp = fopen( filename, "r" ) ) == NULL )
{
perror( filename );
exit( 1 );
}
fd = fileno( fp );
flags = fcntl( fd, F_GETFL );
fcntl(fd, F_SETFL, flags | O_NONBLOCK);
<FIFO Reading Code Here>
}
I really think it's blocking on fopen(), since it won't throw any error messages I put in between that and my first getc( fp ) call.
The process runs fine until I tell the server to try to handle the fifo.. it locks, and waits for me to issue a command from the client I wrote...
Mabye I should just rewrite it using open() so I can just pass the damn flag right when I open it.