import psutil
for p in psutil.process_iter():
if p.name() == 'foo':
print p.cmdline()
print ' '.join(p.cmdline())
PROCESS:
foo -p "Hello World"
RESULT:
['foo', '-p', 'Hello World']
foo -p Hello World
Я хочу получить исходную командную строку для процесса, как в foo -p "Hello World"
, я пытался использовать cmdline()
, но он предоставляет токенизированные параметры, которые меня не интересуют, и объединение их не всегда дает ожидаемый результат, как видно из второго отпечатка результата.
Есть ли способ добиться этого предпочтительно переносимым способом (возможно, используя другую библиотеку или делая это по-другому)?
РЕДАКТИРОВАТЬ
Это для сравнения с уже сохраненной командой. Другим решением моей проблемы может быть то, что просто ' '.join
будет нормально, если я смогу получить статическую командную строку (foo -p "Hello World"
) без кавычек вокруг аргументов для сравнения. Это означает, что если бы существовала функция, выполняющая токенизацию параметров оболочки, которую выполняет psutil, это решило бы мою проблему сравнения команд.