Вызов фермы из программы 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, и мне нужно, чтобы команды работали как положено.
Какой лучший способ решить это?