从python程序调用truss

2024-09-29 01:24:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个python程序,我想用truss运行一个BSD系统命令,这样就可以得到一个syscalls列表(open、stat等)。例如,命令为:

truss -S <application specific command>

我正在使用子流程.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添加了与上面类似的引号,我需要这些引号才能使命令按预期工作。你知道吗

解决这个问题的最好办法是什么?你知道吗


Tags: no命令程序列表applicationbsdopencommand