Прервать программу через определенное время - PullRequest
0 голосов
/ 02 сентября 2010

Я пытаюсь разработать тестовый пример для программы и хотел бы завершить тестовый пример, если он выполняется более 4 секунд. Как это можно сделать на Linux? (Я использую Ubuntu)

Я знаю, что могу рассчитать время выполнения и провалить его> 4, но это просто плохой подход.

Спасибо!

Ответы [ 3 ]

0 голосов
/ 02 сентября 2010

Окончательное решение:

  1 ./slowprogram.sh >/dev/null &
  2 pid=$!
  3 exitbreak=0
  4 for c in {0..4}; do
  5         sleep 1
  6         kill -0 $pid 2>/dev/null
  7         if [ $? -ne 0 ] ;then
  8             exitbreak=1
  9             break
 10         fi
 11 done
 12 if  [ $exitbreak == 1 ]; then
 13         echo '[ OK ]'
 14 else
 15         echo '[FAIL]'
 16         kill -9 $pid 2>/dev/null 
 17 fi
0 голосов
/ 03 сентября 2010

Вы также можете сделать что-то вроде <command> & sleep 5 && kill ${!}

0 голосов
/ 02 сентября 2010

(решение сценария оболочки) Запускает тестовый сценарий в фоновом режиме, получает его PId и через 4 секунды проверяет, все ли еще запущен процесс.

wait_seconds=4
interval_seconds=0.5
run_your_test_case &
pid=$!
max=`expr "$wait_seconds / $interval_seconds"`
for (( I=0; I<$max; I++ ));do
    if kill -0 $pid >/dev/null;then
       echo 'test failed'
    else
       echo 'test ok'
       break
    fi
    sleep $interval_seconds
done
...