2017-09-19 1 views
0

ksh93을 사용하려면 run_cataloguer() 백그라운드 프로세스가 send_mail()이라는 별도의 백그라운드 프로세스에서 다음 스크립트를 사용하여 기다리는 중입니다.다른 배경 기능에서 백그라운드 PID를 기다리는 경우

#!/usr/bin/env ksh 

function run_cataloguer 
{ 
    echo "In run_cataloguer()" 
    sleep 2 
    echo "leaving run_cataloguer()" 
} 
function send_mail 
{ 
    echo "In send_mail()" 
    #jobs 
    wait_for_cataloguer 
    sleep 1 
    echo "Leaving send_mail() " 
} 
function wait_for_cataloguer 
{ 
    echo "In wait_for_cataloguer() PID_CAT = $PID_CAT" 
    wait $PID_CAT 
    waitRet=$? 
    echo "waitRet = $waitRet" 
} 

run_cataloguer & 
PID_CAT=$! 
echo "PID_CAT = $PID_CAT" 

send_mail & 

wait       # Wait for all 
echo "Finished main" 

다음 출력이 보인다 : 완료 될 때까지) (run_cataloguer 기다리지 않도록

PID_CAT = 1265 
In run_cataloguer() 
In send_mail() 
In wait_for_cataloguer() PID_CAT = 1265 
waitRet = 127 # THIS SHOULD be 0 
Leaving send_mail() 
leaving run_cataloguer() 
Finished main 

문제가 PID_CAT를 $ 보이지 대기 명령 수단 waitRet = 127 인 및 35 "send_mail()"을 떠나는 떠나기 전에 "run_cataloguer()"떠나는 전경에서 send_mail을 실행 한 다음 waitRet = 0을 맞으면 정확합니다.

따라서 별도의 백그라운드 프로세스에서 백그라운드 프로세스를 기다릴 수없는 것처럼 보입니다. 또한 작업 명령의 주석을 제거하면 이전 명령문을 확인하는 것으로 보이는 항목이 반환되지 않습니다. 누군가가 해결책을 가지고 있다면, 플래그 파일을 사용하는 양식과는 별도로 :), 매우 감사하겠습니다.

답변

관련 문제