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

Теоретически с этим блоком вы должны видеть только «бег …» один раз (или меньше), но на практике он повторяется до тех пор, пока он не будет убит вручную. Как изменить значение 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 .

  • Является ли суб-оболочка той же самой, что и дочерняя оболочка
  • Помещение одной цитаты в имя файла
  • Загрузите файл на сервер?
  • Создание каталога с пробелом в имени
  • Как получить список значений соответствия атрибутов с помощью xmllint и xpath?
  • Как преобразовать образ .cue / .bin (cdr tracks) в один файл .iso?
  • Как вычесть два раза в оболочке
  • Какие символы нужно избегать в файлах без кавычек?
  • Почему не найдено сопоставление файлов, если перед ними стоит звездочка (*)?
  • Групповая подстановка Sed добавляется в OSX, а не в ожидаемый sub в Linux
  • Как удалить 2 месяца назад файлы в unix
  • Чтение файла при запуске .bashrc, основанный на дате
  • Interesting Posts

    Как транслировать локальное видео на веб-камеру, используя ffmpeg?

    Печать уникальных строк

    CentOS – проблема с правами на запись

    Блокировать доступ к Интернету, но не сетевой доступ для пользователя

    rsync копирует идентичные файлы

    Использовать альтернативы или добавить в PATH?

    Можно ли управлять окнами в Gnome Shell с помощью D-Bus?

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

    Как скопировать чужие папки с public.me.com с помощью wget-подобного инструмента?

    GRUB2 под монетным двором: загрузка ПК-BSD без перегрузки?

    Перекрестное компиляция программного модуля

    Правило iptables для локальной сети с бесплатным доступом в Интернет, блокирующее незапрашиваемое соединение из Интернета на сервер?

    перенаправить вывод {time}

    Попытка заполнить Project Euler # 5, передает все синтаксические проверки, но не работает

    Как просмотреть только первую строку или таблицу в MySQL?

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