Merge "adb: Mask SIGTTIN so that I/O works when backgrounded."
diff --git a/adb/commandline.cpp b/adb/commandline.cpp
index bc5ba38..a915a33 100644
--- a/adb/commandline.cpp
+++ b/adb/commandline.cpp
@@ -39,6 +39,7 @@
 #include <base/strings.h>
 
 #if !defined(_WIN32)
+#include <signal.h>
 #include <termios.h>
 #include <unistd.h>
 #endif
@@ -440,6 +441,14 @@
 
     adb_thread_setname("stdin reader");
 
+#ifndef __WIN32
+    // Mask SIGTTIN in case we're in a backgrounded process
+    sigset_t sigset;
+    sigemptyset(&sigset);
+    sigaddset(&sigset, SIGTTIN);
+    pthread_sigmask(SIG_BLOCK, &sigset, nullptr);
+#endif
+
     char raw_buffer[1024];
     char* buffer_ptr = raw_buffer;
     size_t buffer_size = sizeof(raw_buffer);