Страница 1 из 1

не могу второй раз отправить в фон скрипт

Добавлено: 23.08.2017 20:38
v4567
Есть скрипт, в нём устанавливаю свои обработчики сигналов, в частности сигнал Ctrl+z отправки в фон.

Код: Выделить всё

trap 'fynk ; kill -TSTP $$' SIGTSTP

В функции fynk возвращаю сигналы обратно в систему, командой:

Код: Выделить всё

trap - SIGTSTP

Как видно после выполнения функции fynk и в результате возврата сигнала в систему, выполняется команда:

Код: Выделить всё

kill -TSTP $$

которая опять посылает сигнал отправки в фон нашему скрипту (без этой команды после отправки в фон командная строка не возвращается).

В фон скрипт отправляется отлицно и после командная строка работает нормально.
Возвращается из фона скрипт то же нормально. Естественно после возврата из фона я опять устанавливаю свои обработчики сигналов.
Второй раз скрипт уже не отправляется в фон.
Почему не могу понять, ведь обработчики сигналов я опять установил свои.

Добавлено через 28 минут
Например вот такой скрипт во второй раз в фон не отправляется:

Код: Выделить всё

#!/bin/bash


fynk1()
{

 trap - SIGTSTP
 return 0

}

IzFona()
{

 trap 'fynk1 ; kill -TSTP $$' SIGTSTP
 trap 'IzFona' SIGCONT
 echo "2222222222222"
 return 0

}

IzFona

while true
 do
   sleep 0
done

Почему то он не убивается и по ctrl+c.

Re: не могу второй раз отправить в фон скрипт

Добавлено: 23.08.2017 22:28
Bizdelnick
Попробуйте заменить sleep 0 на :.

Re: не могу второй раз отправить в фон скрипт

Добавлено: 24.08.2017 11:34
v4567
Попробуйте заменить sleep 0 на :.


Да помогло. Вы бы не могли объяснить почему при sleep 0 не работает, а при : работает.
Если я буду знать причину, то смогу поправить в своём скрипте. У меня в скрипте конечно стоит не sleep 0 там команды и т.д.

Re: не могу второй раз отправить в фон скрипт

Добавлено: 24.08.2017 12:13
Bizdelnick
Потому что Вы останавливаете sleep, но не скрипт, в котором сигнал перехватывается. В результате скрипт зависает.

Re: не могу второй раз отправить в фон скрипт

Добавлено: 24.08.2017 20:29
v4567
Потому что Вы останавливаете sleep, но не скрипт, в котором сигнал перехватывается. В результате скрипт зависает.


Первый раз срабатывает, причём не было такого что бы первый раз не сработал и не было такого что бы когда нибудь во второй раз сработал.

Re: не могу второй раз отправить в фон скрипт

Добавлено: 24.08.2017 20:55
Bizdelnick
А у меня для Вашего примера ни разу не срабатывает. Возможно зависит от версии bash (я и dash пробовал с тем же результатом).