私の問題は、SPECCPU2006 (ベンチマーク スイート) の実行に固有のものです。ベンチマークをインストールした後、ターミナルで「specinvoke」というコマンドを呼び出して、特定のベンチマークを実行できます。コードの一部が次のような別のスクリプトがあります。
cd (specific benchmark directory)
specinvoke &
pid=$!
私の目標は、実行中のタスクの PID を取得することです。ただし、上記のように実行すると、"specinvoke" シェル コマンドの PID が取得され、実際に実行中のタスクには別の PID が割り当てられます。
ただし、specinvoke -n
実行すると、specinvoke シェルで実行されている実際のコードが stdout に出力されます。たとえば、あるベンチマークでは、次のようになります。
# specinvoke r6392
# Invoked as: specinvoke -n
# timer ticks over every 1000 ns
# Use another -n on the command line to see chdir commands and env dump
# Starting run for copy #0
../run_base_ref_gcc43-64bit.0000/milc_base.gcc43-64bit < su3imp.in > su3imp.out 2>> su3imp.err
その中でバイナリを実行しています。コードはベンチマークごとに異なります (異なるベンチマーク ディレクトリで呼び出すことにより)。そして、スクリプトだけでなく「specinvoke」がインストールされているため、「 」を使用できませんsource specinvoke
。
手がかりはありますか?同じシェル(同じPIDを持つ)でシェルコマンドを直接呼び出す方法はありますspecinvoke -n
か?