Вызов фермы из программы Python

У меня есть программа на Python, где я хочу выполнить системную команду BSD с ферменной конструкцией, чтобы я мог получить список выполненных системных вызовов (open, stat и т. Д.). Например, команда будет такой:

truss -S <application specific command>

Я использую subprocess.Popen(команда, .., ..) для вызова команды. Я передаю команду в виде списка, а не строки, поэтому я получаю правильное кодирование из Python. Итак, список команд выглядит так:

command = ['truss', '-S', <application specific command>]

Но это дает ошибку для фермы:

truss -S "ls -lrt"
truss: execvp  No such file or directory
truss: can not get etype: No such process

Но если я запускаю ту же команду без кавычек выше, она проходит. Python добавляет кавычки, аналогичные приведенным выше, когда я передаю команду в виде списка в Popen, и мне нужно, чтобы команды работали как положено.

Какой лучший способ решить это?

0 ответов

Другие вопросы по тегам