/* desc tanıtıcısına FD_CLOEXEC 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_cloexec_flag (int desc, int value)
{
int oldflags = fcntl (desc, F_GETFD, 0);
/* seçeneklerin okunması başarısız olursa,
hata durmunun belirtip hemen dönelim. */
if (oldflags < 0)
return oldflags;
/* Seçeneğin durumunu belirleyebiliriz. */
if (value != 0)
oldflags |= FD_CLOEXEC;
else
oldflags &= ~FD_CLOEXEC;
/* Değiştirilen seçeneği dosya tanıtıcısına atayalım. */
return fcntl (desc, F_SETFD, oldflags);
}