/* desc tanıtıcısına O_NONBLOCK seçeneği,
value sıfırdan farklıysa atanır, değilse temizlenir.
Dönüş değeri hata yoksa 0, varsa -1 olur ve hata errno'ya
atanır. */
int
set_nonblock_flag (int desc, int value)
{
int oldflags = fcntl (desc, F_GETFL, 0);
/* seçeneklerin okunması başarısız olursa,
hata durmunun belirtip hemen dönelim. */
if (oldflags == -1)
return -1;
/* Seçeneğin durumunu belirleyebiliriz. */
if (value != 0)
oldflags |= O_NONBLOCK;
else
oldflags &= ~O_NONBLOCK;
/* Değiştirilen seçeneği dosya tanıtıcısına atayalım. */
return fcntl (desc, F_SETFL, oldflags);
}