Cross-platform asynchronous I/O
Go to file
Ben Noordhuis 041d60e141 uv-unix: avoid exec-after-fork race in uv_spawn()
The race condition in a nutshell:

    if ((pid = fork()) > 0) {
      kill(pid, SIGTERM);
    }
    else if (pid == 0) {
      execve("/bin/cat", argp, envp);
    }

The parent sends a signal immediately after forking.
Since the child may not have called `execve()` yet,
there is no telling what process receives the signal,
our fork or /bin/cat.

To avoid ambiguity, we create a pipe with both ends
marked close-on-exec. Then, after the call to `fork()`,
the parent polls the read end until it sees POLLHUP.
2011-08-05 04:09:20 +02:00
doc src/ and include/ directories 2011-07-07 07:52:57 -07:00
include Support for unescaped arguments, suitable for use with cmd /c. 2011-08-04 18:22:47 -07:00
msvs windows: remove dependency on rpcrt4 and ole32 libs. fixes https://github.com/joyent/libuv/issues/118 2011-08-01 20:10:55 -07:00
src uv-unix: avoid exec-after-fork race in uv_spawn() 2011-08-05 04:09:20 +02:00
test Support for unescaped arguments, suitable for use with cmd /c. 2011-08-04 18:22:47 -07:00
.gitignore c-ares unix 2011-06-15 14:23:46 +02:00
AUTHORS Add Matt to the authors 2011-06-28 14:11:47 +02:00
config-mingw.mk windows: remove dependency on rpcrt4 and ole32 libs. fixes https://github.com/joyent/libuv/issues/118 2011-08-01 20:10:55 -07:00
config-unix.mk solaris fixes 2011-08-02 06:29:25 +00:00
LICENSE unix: Include libeio 2011-06-30 11:43:17 -07:00
Makefile Makefile: disable test-% and bench-% targets 2011-07-14 03:32:19 +02:00
README Add doc on desired-api 2011-05-28 01:47:47 -07:00

This is the new networking layer for Node. Its purpose is to abstract
IOCP on windows and libev on Unix systems. We intend to eventually contain
all platform differences in this library.

http://nodejs.org/

(This was previously called liboio)

Supported Platforms:

Microsoft Windows operating systems since Windows XP sp2. It can be built
with either Visual Studio or MinGW.

Linux 2.6 and MacOS using the GCC toolchain.

Solaris 121 and later using GCC toolchain.