From e80ca370e3e0175eaab442511d07bb13c83d9e48 Mon Sep 17 00:00:00 2001
From: Brad King <brad.king@kitware.com>
Date: Sat, 20 May 2006 18:50:27 -0400
Subject: [PATCH] ENH: Enabling process tree killing on Cygwin.

---
 ProcessUNIX.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/ProcessUNIX.c b/ProcessUNIX.c
index 6f187bb8..5a224902 100644
--- a/ProcessUNIX.c
+++ b/ProcessUNIX.c
@@ -1909,12 +1909,15 @@ static pid_t kwsysProcessFork(kwsysProcess* cp,
 #elif defined(__hpux) || defined(__sparc) || defined(__sgi) || defined(_AIX)
 # define KWSYSPE_PS_COMMAND "ps -ef"
 # define KWSYSPE_PS_FORMAT  "%*s %d %d %*[^\n]\n"
+#elif defined(__CYGWIN__)
+# define KWSYSPE_PS_COMMAND "ps aux"
+# define KWSYSPE_PS_FORMAT  "%d %d %*[^\n]\n"
 #endif
 
 /*--------------------------------------------------------------------------*/
 static void kwsysProcessKill(pid_t process_id)
 {
-#if defined(__linux__)
+#if defined(__linux__) || defined(__CYGWIN__)
   DIR* procdir;
 #endif
 
@@ -1922,7 +1925,7 @@ static void kwsysProcessKill(pid_t process_id)
   kill(process_id, SIGSTOP);
 
   /* Kill all children if we can find them.  */
-#if defined(__linux__)
+#if defined(__linux__) || defined(__CYGWIN__)
   /* First try using the /proc filesystem.  */
   if((procdir = opendir("/proc")) != NULL)
     {
@@ -1980,8 +1983,8 @@ static void kwsysProcessKill(pid_t process_id)
     }
   else
 #endif
-#if defined(KWSYSPE_PS_COMMAND)
     {
+#if defined(KWSYSPE_PS_COMMAND)
     /* Try running "ps" to get the process information.  */
     FILE* ps = popen(KWSYSPE_PS_COMMAND, "r");
 
@@ -2005,8 +2008,8 @@ static void kwsysProcessKill(pid_t process_id)
       {
       pclose(ps);
       }
-    }
 #endif
+    }
 
   /* Kill the process.  */
   kill(process_id, SIGKILL);
-- 
GitLab