Обмен данными между программами

151
17 октября 2021, 02:20

Есть программа на С# (MonoDevelop, Linux), которая может при запуске управлять демоном (старт/стоп/статус). Как можно осуществить передачу данных между ними? (Например, родительская программа пишет в файл, а демон читает из него, нужно синхронизировать потоки, чтоб не было ошибки чтения, БЕЗ TRY/CATCH)

Answer 1

Как можно осуществить передачу данных между ними?

На самом деле это очень большой вопрос. В POSIX системах есть целый раздел: IPC - Inter Process Communication - взаимодействие между процессами. Подход с обменом даннвми черз общий файл - самое плохое решение. В рамках POSIX существует много различных способов:

  1. Общая память
  2. Очереди сообщений
  3. Каналы данных - Pipe
  4. Сигналы
  5. Сокеты UNIX

Короче - очень много чего. Unix (в отличии от DOS/Windows) изначально создавался как МНОГОпроцессная система. Поэтому средства IPC в Linux черезвычайно развиты.

Есть замечательная книга на эту тему "UNIX: взаимодействие процессов", Уильям Ричард Стивенс. Это, можно сказать, талмуд по IPC. Соответствующей толщины.

Я думаю, что для вашей задачи самым простым решением будет использование очереди сообщений. Но это уже - вам решать.

READ ALSO
C# Не видит объявленный List<BitArray>

C# Не видит объявленный List<BitArray>

Хочу заполнить signals, но не получается

113
c# wpf открыть файл в папке с помощью Hyperlink

c# wpf открыть файл в папке с помощью Hyperlink

применял такой код для показа файла в папке через кнопку

158
Помогите решить проблему Cannot modify header information - headers already sent by [дубликат]

Помогите решить проблему Cannot modify header information - headers already sent by [дубликат]

Хочу чтобы при заполнение формы, пароли и тд

147