• R
    emulate SOCK_CLOEXEC and SOCK_NONBLOCK for old (pre-2.6.27) kernels · 79a5e73e
    Rich Felker 提交于
    also update syslog to use SOCK_CLOEXEC rather than separate fcntl
    step, to make it safe in multithreaded programs that run external
    programs.
    
    emulation is not atomic; it could be made atomic by holding a lock on
    forking during the operation, but this seems like overkill. my goal is
    not to achieve perfect behavior on old kernels (which have plenty of
    other imperfect behavior already) but to avoid catastrophic breakage
    in (1) syslog, which would give no output on old kernels with the
    change to use SOCK_CLOEXEC, and (2) programs built on a new kernel
    where configure scripts detected a working SOCK_CLOEXEC, which later
    get run on older kernels (they may otherwise fail to work completely).
    79a5e73e
syslog.c 2.4 KB