Получить параметры для приложения C с помощью команд оболочки - PullRequest
1 голос
/ 21 февраля 2012

Каково наилучшее решение для получения значений, известных в оболочке, в двоичное приложение C во время его выполнения?

Приложение C связывается с продуктом стороннего производителя и отправляет ему фактические настройки.Но некоторые параметры изменяются непосредственно в ОС, поэтому я хочу использовать какую-то команду из оболочки, чтобы влиять на эти переменные в приложении C, изменять их.

Знаете ли вы какой-нибудь способ для достижения этого (используя переменную, каналы илиможет что то другое другое)?

Я посмотрел на глобальные переменные, но хотя я изменяю значение глобальной переменной, это не влияет на приложение C, которое работало все время.(Я использовал функцию getenv ()).

Ответы [ 2 ]

5 голосов
/ 21 февраля 2012

Большинство долго выполняющихся процессов (aka. Daemon) в Unix имеют какие-то файлы конфигурации (например, /etc/mydaemon.conf), которые они читают (и оценивают)

  • при запуске (конечно)
  • когда они получают сигнал HUP.

Таким образом, самый простой и известный способ - установить обработчик сигналов в приложении C и перехватывать сигналы SIGHUP. Это, конечно, требует внесения изменений в приложение C.

Чтобы вызвать перечитывание в оболочке, вы можете использовать одну из следующих команд:

kill -HUP PID_OF_MY_PROCESS
pkill -HUP name_of_my_process
1 голос
/ 21 февраля 2012

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

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

...