====== IPC ====== IPC - **i**nter-**p**rocess **c**ommunications - межпроцессное взаимодействие ===== signals ===== Сигналы - часть [[playground:glossary:posix|стандарта POSIX]], удобны для межпроцессного взаимодействия в unix-like системах. Их может посылать как пользователь программе напрямую((вернее ручками, тк дефакто, посылает их ''kill'', тоже прграмма)), так и //master// процесс: когда основная программа - демон, называемый //worker//, а сигналы ему шлет //master//, как, например, у ''ntpd'' и ''ntpdc''. Мастер должен найти процесс-воркер, что бы слать ему сигналы. ==== pid ==== PID (**p**rocess **id**entifier) - уникальный числовой идентификатор процесса. Чтобы master'у получить PID worker'а: - Использовать команды, такие как ''ps'' или ''pgrep''. Например, команда ''ps aux'' выводит список всех процессов с их PID, что позволяет мастеру определить, какой процесс-воркер необходимо адресовать. Но для этого надо взаимодействовать с shell'ом. Надежднее, но заморочнее. - Прочитать его из файла((традиционно, такиее файлы имеют суффикс ''.pid'')) в условленном месте, куда worker при старте записывает свой PID. Если файла в условленном месте нет - master считает, что worker не запущен. {{fixme}} примеры ==== socket ==== Сокеты - еще один способ межпроцессного взаимодействия. Сокеты могут быть как "локальными", использующими файловую систему, так и "сетевыми", использующими сетевые протоколы. Сокеты могут использовать различные протоколы((те же TCP / UDP)). {{fixme}} примеры ===== named pipe ===== {{fixme}}