The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Завершение дочерних процессов 2 уровня"
Отправлено Аноним, 13-Май-20 21:19 
Вот пример кода:

EXBGFILE=$(mktemp -p /dev/shm/ --suffix=wdfile)

sendvalue() {
  echo "${1}">${EXBGFILE}
}
readvalue() {
  echo "$(<${EXBGFILE})"
}
sendvalue 0

bgloop() {
  while sleep 9 & wait; do
    echo "exec"
    var=$(readvalue)
    echo "${FUNCNAME} read:${var}"
  done
}

bgloop &
bgjob=$!
trap "kill '$bgjob'; rm -v -- '${EXBGFILE}'" EXIT

echo `jobs -l`
echo `jobs -p`
sendvalue 2
sleep 10
sendvalue 5
sleep 10
sendvalue 9
sleep 10
sendvalue 11
echo done

Если я посылаю ^C скрипту, sleep 9 переходит под инит до завершения (kill останавливает только фоновый жоб и sleep никак не остановить). Сейчас я вешаю такую конструкцию на завершение мейна, чтобы убить себя, и при этом прилетало и внучке. У меня есть ощущение, что лучше обойтись без самоубийства (остановки группы процессов, к которой принадлежат все порождённые процессы включая мейн).

trap "kill '$bgjob'; rm -v -- ${EXBGFILE}; trap 'pkill -g $$' EXIT;" EXIT;

При этом kill '$bgjob' (как и jobs -p в мейне) вообще не надёжная тема, процесса может и не оказаться, если мы дёргаем sigint, и тогда килл жалуется, мол, но сач процесс. Однако, pkill -g $$ всегда завершает всех без эксцессов (при таком использовании -- если в trap exit что-то постороннее, прилетает terminated).

 

Ваше сообщение
Имя*:
EMail:
Для отправки новых сообщений в текущей нити на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру