adb: make ctrl-c when spawning a daemon not kill the daemon.

Previously, using ctrl-c in a command that needs to spawn a daemon
because one isn't already available would kill the daemon along with the
foreground process.

Bug: http://b/26982628
Change-Id: I7fefc531c3e4895423e7b466322b5426d01dc9ef
diff --git a/adb/client/main.cpp b/adb/client/main.cpp
index b7b30c5..6397c52 100644
--- a/adb/client/main.cpp
+++ b/adb/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 @@
         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.