Изменение переменных в разветвленном процессе извне этой вилки?

Теоретически с этим блоком вы должны видеть только «бег …» один раз (или меньше), но на практике он повторяется до тех пор, пока он не будет убит вручную. Как изменить значение x внутри forked-процесса на false из-за разветвленного процесса после того, как была вызвана функция «start»?

export x=true start() { while [ $x == true ]; do echo running... sleep 1 done } start & x=false 

2 Solutions collect form web for “Изменение переменных в разветвленном процессе извне этой вилки?”

Простое решение здесь использовать какую-то межпроцессную связь, чтобы сообщить целевому процессу внести изменения. Например, вы можете использовать сигналы:

 #!/bin/sh export x=true start() { trap x=false USR1 while [ $x = "true" ]; do echo running... sleep 1 done } start & sleep 5 kill -USR1 $! wait 

производит этот вывод:

 $ ./testit.sh running... running... running... running... running... $ 

Если вы используете ksh93 , вы можете использовать функции дисциплины для реализации общих переменных (см. https://stackoverflow.com/questions/13726293/environment-variables-to-be-used-across-multiple-korn-ksh93-shell-scripts -get )

Кроме того, вы можете использовать fish которая реализует эту функцию через демона: fishd .

  • Есть ли команда оболочки или утилита для вывода процесса кэширования?
  • Как запустить gnome javascript extensions (gjs) из терминала
  • Что происходит с фоновыми заданиями после выхода из оболочки?
  • Как закодировать строку значений с помощью ',' и напечатать ее как список
  • Использование inotify для мониторинга каталога, но не работает 100%
  • `Unhandled Exception: System.ArgumentNullException: значение не может быть ошибкой null.` при запуске` dotnet run` с использованием сценария запуска
  • Что делает команда su - `whoami`?
  • Переименуйте каталоги с "fname lname" на "lname, fname "
  • Как выполнять команды, последовательно эмулируя пользователя на терминале с помощью сценария оболочки
  • Сколько элементов может хранить массив в unix-скрипте?
  • Как создать пользовательские команды в Unix / Linux?
  • Interesting Posts

    Почему бы не всегда использовать rsync?

    Модуль беспроводного ядра не загружен

    Ищите файлы в текущем каталоге, которые не соответствуют шаблону

    имя файла для файлов с идентификатором процессора и временным шагом должно включать имя файла

    Команда для поиска строки внутри шаблона

    Xenomai: / dev / rtheap отсутствует

    Объединение двух файлов, соответствующих двум столбцам с несоответствиями и в каждой соответствующей строке, замените второй столбец из файла 1 на 6-й столбец в файле 2

    Рекомендации по распределению для настройки мультисезона с использованием двухголовочного и поддерживающего прямого рендеринга

    Как я могу автоматически отключить свой компьютер ночью?

    Сед не работает должным образом

    FreeBSD 10 не загружается после чистой установки

    «Доступ запрещен» при входе в виртуальную машину Solaris с использованием ssh

    Linuxwacom xsetwacom / xorg.conf

    Порт малины Pi, перенаправляющий на неправильный локальный IP-адрес

    Почему мои стрелочные клавиши не работают в sh?

    Linux и Unix - лучшая ОС в мире.