我有一个python程序,我想用truss运行一个BSD系统命令,这样我就可以得到一个系统调用列表(open,stat等)。例如,命令为:
truss -S <application specific command>
我正在使用subprocess.Popen(command,..,..)来调用该命令。我将命令作为列表传递,而不是字符串,所以我从Python获得正确的编码。所以命令列表如下:
command = ['truss', '-S', <application specific command>]
但是这给了truss错误:
truss -S "ls -lrt"
truss: execvp No such file or directory
truss: can not get etype: No such process
但如果我在没有上面引号的情况下运行相同的命令,它就会通过。当我将命令作为列表传递给Popen时,Python添加类似于上面的引号,我需要这些命令才能按预期工作。
解决这个问题的最佳方法是什么?