2 # This file is part of GNUnet.
3 # (C) 2011 Christian Grothoff (and other contributing authors)
5 # GNUnet is free software; you can redistribute it and/or modify
6 # it under the terms of the GNU General Public License as published
7 # by the Free Software Foundation; either version 2, or (at your
8 # option) any later version.
10 # GNUnet is distributed in the hope that it will be useful, but
11 # WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 # General Public License for more details.
15 # You should have received a copy of the GNU General Public License
16 # along with GNUnet; see the file COPYING. If not, write to the
17 # Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 # Boston, MA 02111-1307, USA.
20 # Finds any gnunet processes still running in the system and kills them
22 # gnunet janitor can be used by invoking `make' like this:
23 # TESTS_ENVIRONMENT='${top_srcdir}/contrib/gnunet_janitor.py &&' make check
25 from __future__ import print_function
36 from win32com.client import GetObject
37 WMI = GetObject('winmgmts:')
39 def get_process_list ():
42 processes = WMI.InstancesOf('Win32_Process')
44 result.append ((p.Properties_('ProcessId').Value, re.sub (r'(.+)\.exe', r'\1', p.Properties_('Name').Value)))
46 pids = [pid for pid in os.listdir('/proc') if pid.isdigit ()]
48 with open (os.path.join ('/proc', pid, 'cmdline'), 'rb') as p:
49 cmdline = p.read ().split ('\x00')
51 result.append ((pid, cmdline[0]))
55 procs = get_process_list ()
58 if re.match (r'gnunet-.+', p[1]):
59 gnunet_procs.append (p)
60 for p in gnunet_procs:
61 if re.match (r'gnunet-service-arm', p[1]):
62 print ("killing arm process {0:5} {1}".format (p[0], p[1]))
64 terminate.safe_terminate_process_by_pid (int (p[0]), 1)
66 print ("failed: {0}".format (e))
68 for p in gnunet_procs:
69 if not re.match (r'gnunet-service-arm', p[1]):
70 print ("killing non-arm process {0:5} {1}".format (p[0], p[1]))
72 terminate.safe_terminate_process_by_pid (int (p[0]), 1)
74 print ("failed: {0}".format (e))
77 if __name__ == '__main__':