내 문제는 SPECCPU2006 (벤치 마크 슈트)의 실행과 관련이 있습니다. 벤치 마크를 설치 한 후 터미널에서 "specinvoke"라는 명령을 호출하여 특정 벤치 마크를 실행할 수 있습니다. 코드의 일부가 다음과 같은 다른 스크립트가 있습니다.동일한 쉘 (bash)에서 스크립트 실행
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
binary.The 코드가 벤치 마크 벤치 마크에서 다를 수 있습니다 실행중인 (다른 벤치 마크 디렉토리에 호출하여). 그리고 "specinvoke"가 설치되어 있고 스크립트가 아니기 때문에 "source specinvoke
"을 사용할 수 없습니다.
실마리가 있습니까? 동일한 쉘 (동일한 PID를 가짐)에서 쉘 명령을 직접 호출 할 수있는 방법이 있습니까, 아니면 specinvoke -n
을 덤프하고 덤프 된 자료를 실행해야합니까?
답장을 보내 주셔서 감사합니다. 그러나 이것은 아마도 잘 작동하지 않을 것입니다. 이미 같은 이름의 다른 프로세스를 시작했을 수도 있기 때문입니다. milc_base.gcc43-64bit ... 내 말이 무슨 뜻인지 아시죠? 마지막 specinvoke 쉘 스크립트에 의해 호출 된 프로세스의 PID를 직접 얻을 수있는 방법이 있습니까? –