summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--client/main.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/client/main.cpp b/client/main.cpp
index b7b30c5..6397c52 100644
--- a/client/main.cpp
+++ b/client/main.cpp
@@ -21,6 +21,7 @@
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
+#include <unistd.h>
// We only build the affinity WAR code for Linux.
#if defined(__linux__)
@@ -125,6 +126,13 @@ int adb_server_main(int is_daemon, int server_port, int ack_reply_fd) {
close_stdin();
setup_daemon_logging();
+#if !defined(_WIN32)
+ // Set the process group so that ctrl-c in the spawning process doesn't kill us.
+ // Do this here instead of after the fork so that a ctrl-c between the "starting server" and
+ // "done starting server" messages gets a chance to terminate the server.
+ setpgrp();
+#endif
+
// Any error output written to stderr now goes to adb.log. We could
// keep around a copy of the stderr fd and use that to write any errors
// encountered by the following code, but that is probably overkill.