Перейти к содержанию

exec ${0} ${*} - ничего не понимаю


Рекомендуемые сообщения

Доброе время суток, господа линуксоиды!

Столкнулся тут с одной проблемкой... решить не могу - зашел в тупик. Кажется, все правильно, а получается совсем не то, что надо Sad

Задача: в скрипте перезапустить себя в фон

Исходник:

if [ -z ${IN} ]; then

export IN=1

exec ${0} ${*} &

fi

Насколько я понимаю, оболочка выполняет эту команду как fork();exec();, в фон уходит не оригинальный процесс, а его копия-потомок, что мне совсем не подходит Sad Как средствами оболочки отправить себя в фон?

Ссылка на комментарий
Поделиться на другие сайты

Можно попробовать так:

if [ -z ${IN} ]; then
export IN=1
kill -SIGTSTP $$
fi
Правда, при этом скрипт, уйдя в фон, приостановит свое выполнение.
Ссылка на комментарий
Поделиться на другие сайты

Спасибо. А вот еще вариант:

if [ -z ${IN} ]; then
export IN=1
exec ${0} ${*} &
exit 0
fi

Почему-то мне сразу не пришло в голову, что потомок является точной копией родителя, а значит последний можно завершить, тем самым освободив консоль. Достаточно было просто вспомнить Си Smile

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...