Linux의 다음 스크립트는 "sleep 1 end"를 인쇄하지만 일반적으로 POSIX에서는 sleep 0.1
인수가 정수여야 하므로 이를 사용할 수 없습니다. 이 명령을 무시하면 스크립트는 절대 종료되지 않지만(왜!?) CPU 리소스를 많이 소모합니다. 시스템을 교체하면 ( : )
시스템에서 작동 하지만 일반적으로 작동하는지, 심지어 CPU 성능이 많이 필요한지 확실하지 않습니다. 더 나은 POSIX 솔루션은 무엇입니까?
#!/bin/sh
sleep 2 &
pid=$!
sleep 1 &
pid_sleep=$!
while kill -0 "$pid" 2>/dev/null; do
kill -0 "$pid_sleep" 2>/dev/null || {
echo sleep 1 finished
exit 0
}
sleep 0.1
done
답변1
절전 모드가 종료될 때까지 기다리는 또 다른 방법은 다음 wait
명령을 사용하는 것입니다.
sleep 2 &
pid=$!
sleep 1 &
pid_sleep=$!
wait $pid $pid_sleep
echo "commands finished"