summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNico Weber <nicolasweber@gmx.de>2016-11-08 00:08:50 (GMT)
committerGitHub <noreply@github.com>2016-11-08 00:08:50 (GMT)
commit21fc1203c1ae8a43812505762407db6842de6bf7 (patch)
treef51fe7e45f821a85160bffbaae0922ed67426856
parentef0616e3e46d19d8fd7ae2a505384f8320053262 (diff)
parent5153cedfd7720547489b6b2e5d5e4485def621c9 (diff)
downloadNinja-21fc1203c1ae8a43812505762407db6842de6bf7.zip
Ninja-21fc1203c1ae8a43812505762407db6842de6bf7.tar.gz
Ninja-21fc1203c1ae8a43812505762407db6842de6bf7.tar.bz2
Merge pull request #1182 from moosotc/master
Use POSIX_SPAWN_USEVFORK if available
-rw-r--r--src/subprocess-posix.cc5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/subprocess-posix.cc b/src/subprocess-posix.cc
index 5ffe85b..f1f94e5 100644
--- a/src/subprocess-posix.cc
+++ b/src/subprocess-posix.cc
@@ -73,8 +73,6 @@ bool Subprocess::Start(SubprocessSet* set, const string& command) {
// default action in the new process image, so no explicit
// POSIX_SPAWN_SETSIGDEF parameter is needed.
- // TODO: Consider using POSIX_SPAWN_USEVFORK on Linux with glibc?
-
if (!use_console_) {
// Put the child in its own process group, so ctrl-c won't reach it.
flags |= POSIX_SPAWN_SETPGROUP;
@@ -93,6 +91,9 @@ bool Subprocess::Start(SubprocessSet* set, const string& command) {
// In the console case, output_pipe is still inherited by the child and
// closed when the subprocess finishes, which then notifies ninja.
}
+#ifdef POSIX_SPAWN_USEVFORK
+ flags |= POSIX_SPAWN_USEVFORK;
+#endif
if (posix_spawnattr_setflags(&attr, flags) != 0)
Fatal("posix_spawnattr_setflags: %s", strerror(errno));