プログラムの実行ファイルを表示するには?

プログラムの実行ファイルを表示するには?

プログラムで使用される実行可能ファイルのリストを表示またはインポートする方法はありますか?

具体例は文書スクロールホイールである。 unrarやp7zip-rarなど、同じタスク用の複数の実行可能ファイルがある場合は、どの実行可能ファイルを使用しているかを確認する方法はありますか?

"ldd"プログラムを使用すると、プログラムで使用されているライブラリを表示できますが、リアルタイムでは表示できません。同等の実行ファイルはありますか?好ましくはライブですか?それとも別の方法?

ベストアンサー1

から始めましょうストレス。プログラムが別のプログラムを呼び出すときは、これらのexecシステム呼び出しの1つを使用してください。たとえば、次の Ruby スクリプトが提供されます。

#!/usr/bin/env ruby
system("ls")
system("df")

strace出力をgrepして、どの実行ファイルが実行されているかを確認できます。

$ strace -f ./test.rb  2>&1 | grep exec
execve("./test.rb", ["./test.rb"], [/* 23 vars */]) = 0
execve("/opt/opscode/embedded/bin/ruby", ["ruby", "./test.rb"], [/* 23 vars */]) = 0
[pid  7696] read(5, "ame+.  If the +exec_name+\n  # is"..., 8192) = 8192
[pid  7698] execve("/bin/ls", ["ls"], [/* 23 vars */] <unfinished ...>
[pid  7698] <... execve resumed> )      = 0
[pid  7700] execve("/bin/df", ["df"], [/* 23 vars */] <unfinished ...>
[pid  7700] <... execve resumed> )      = 0

これ-fにより、straceは子プロセスも追跡できます。最初は、私のスクリプトを実行しているシェルとRubyインタプリタを見ることができます。これにより、このスクリプトが/bin/lsおよび/bin/dfも実行していることがわかります。この方法では、実行時に使用された実行可能ファイルのみが表示され、実行時の状態が異なる場合に使用できる実行可能ファイルはすべて表示されません。

おすすめ記事