Closed
Description
This involves filling out libnative/io/mod.rs
, but this is also a very tricky issue. Right now the API is wrapped around what libuv provided for us, but that may not be the best API to have.
Dealing with signals is always an incredibly tricky topic, and here's the ideas for what should possibly happen:
- on linux (maybe android?)
signalfd
should be used for everything - on windows, basically just do whatever libuv does and pray that everything works
- on everything else, we're going to have to resort to
sigaction
. I believe that the best way to deal with this is libuv's trick of a self-looping pipe (the signal handler writes the signal onto a pipe which is read in the "event loop"). This will certainly involve some trickiness.
It has also been brought up that there are primitives like sigwait
on unixes which can be used to just block a thread when waiting for "some group of signals", but the API which we have created for signals cannot wrap this functionality. We could add a similar function for libgreen/libnative, but I personally don't think it's worth it. It is worth some discussion, however.