Исходя из вашего комментария, я все еще не понимаю, почему вы бы предпочли убить my_prog
, чтобы завершить его упорядоченным образом. Десять секунд - это довольно произвольное измерение в многопроцессорной системе, при котором my_prog
может генерировать 10 тыс. Строк или 0 строк вывода в зависимости от загрузки системы.
Если вы хотите ограничить вывод my_prog
чем-то более определенным, попробуйте
my_prog | head -1000 | awk
без отрыва от оболочки. В худшем случае head закроет свой ввод и my_prog получит SIGPIPE. В лучшем случае измените my_prog
, чтобы получить желаемый объем вывода.
добавлено в ответ на комментарий :
Поскольку у вас есть контроль над my_prog
, укажите необязательный аргумент -s duration
. Тогда где-нибудь в вашем основном цикле вы можете поместить предикат:
if (duration_exceeded()) {
exit(0);
}
, где выход, в свою очередь, будет правильно очищать выходные файлы. Если отчаянно и нет места для предиката, это может быть реализовано с помощью alarm (3), который я намеренно не показываю, потому что это плохо.
Суть вашей проблемы в том, что my_prog
работает вечно. Все остальное здесь - хак, чтобы обойти это ограничение.