Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.RU > *nix > не могу второй раз отправить в фон скрипт


Автор: v4567 23.08.17, 17:40
Есть скрипт, в нём устанавливаю свои обработчики сигналов, в частности сигнал Ctrl+z отправки в фон.

<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    trap 'fynk ; kill -TSTP $$' SIGTSTP

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

<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    trap - SIGTSTP

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

<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    kill -TSTP $$

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

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

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

<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    #!/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.

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)