diff options
Diffstat (limited to 'ext/sleepy_penguin/kqueue.c')
-rw-r--r-- | ext/sleepy_penguin/kqueue.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/ext/sleepy_penguin/kqueue.c b/ext/sleepy_penguin/kqueue.c index 430bc88..d7e8d8e 100644 --- a/ext/sleepy_penguin/kqueue.c +++ b/ext/sleepy_penguin/kqueue.c @@ -110,6 +110,7 @@ static VALUE s_new(VALUE klass) { VALUE rv; int fd = kqueue(); + int flags; if (fd < 0) { /* @@ -122,9 +123,12 @@ static VALUE s_new(VALUE klass) rb_sys_fail("kqueue"); } + flags = fcntl(fd, F_GETFD); + if (flags != -1) + fcntl(fd, F_SETFD, flags | FD_CLOEXEC); + rv = INT2FIX(fd); - /* This will set FD_CLOEXEC on Ruby 2.0.0+: */ return rb_call_super(1, &rv); } |