On 09.03.2017 17:54, Paolo Bonzini wrote: > > > On 20/02/2017 16:42, Stefan Raspl wrote: >> +def get_gname_from_pid(pid): >> + """Returns the guest name for a QEMU process pid. >> + >> + Extracts the guest name from the QEMU comma line by processing the '-name' >> + option. Will also handle names specified out of sequence. >> + >> + """ >> + name = '' >> + try: >> + line = open('/proc/{}/cmdline'.format(pid), 'rb').read().split('\0') >> + parms = line[line.index('-name') + 1].split(',') >> + while '' in parms: >> + # commas are escaped (i.e. ',,'), hence e.g. 'foo,bar' results in >> + # ['foo', '', 'bar'], which we revert here >> + idx = parms.index('') >> + parms[idx - 1] += ',' + parms[idx + 1] >> + del parms[idx:idx+2] >> + # the '-name' switch allows for two ways to specify the guest name, >> + # where the plain name overrides the name specified via 'guest=' >> + for arg in parms: >> + if '=' not in arg: >> + name = arg >> + break >> + if arg[:6] == 'guest=': >> + name = arg[6:] >> + except (ValueError, IOError, IndexError): >> + pass >> + >> + return name >> + >> + > > That's as hideous as it is useful! :) I'm not going to argue with that! Ciao, Stefan