How to make a file descriptor blocking?

c, file-io, unix

Solution

Its been a while since I played with C, but you could use the fcntl() function to change the flags of a file descriptor:

#include <unistd.h>
#include <fcntl.h>

// Save the existing flags

saved_flags = fcntl(fd, F_GETFL);

// Set the new flags with O_NONBLOCK masked out

fcntl(fd, F_SETFL, saved_flags & ~O_NONBLOCK);

Problem

Given an arbitrary file descriptor, can I make it blocking if it is non-blocking? If so, how?

Original source