Mac OS X эквивалент CreateEvent () с именованным объектом для межпроцессного взаимодействия?

Я ищу самый простой или наиболее подходящий способ в Mac OS X просто "сигнализировать" или уведомить один процесс из другого. Исходя из фона Windows, это может быть достигнуто с помощью чего-то вроде следующего.

В Процессе A:

// create named event
hCreatedEvent = CreateEvent(NULL, TRUE, FALSE, "MyUniqueNamedEvent");

// wait for it to be signalled
WaitForSingleObject(hCreatedEvent, INFINITE);

, а затем в Процессе B:

// open the existing named event
hOpenedEvent = OpenEvent(EVENT_ALL_ACCESS, FALSE, "MyUniqueNamedEvent");

// signal it
SetEvent(hOpenedEvent);

Итак, когда SetEvent ] в Процессе B выполняется, процесс A выйдет из WaitForSingleObject и выполнит некоторую работу.

Мне не нужно отправлять какие-либо данные, поэтому я Мы исключили такие вещи, как именованные каналы (FIFO) или сокеты и т. д., как немного лишние (я просмотрел этот аналогичный вопрос , но, поскольку им нужно отправлять данные, мой вопрос немного отличается ). Точно так же я не буду знать PID другого процесса (вот почему мне нужен какой-то общий объект), поэтому я не могу использовать что-либо, что потребовало бы этого.

Пока в моем коротком списке:

  • Семафоры POSIX - с использованием sem_open , sem_wait и sem_post для создания / открытия, ожидания и передачи сигналов событие соответственно. Кажется, довольно просто использовать.
  • Функции BSD notify (3) - кажутся довольно простыми в использовании, если не сказать немного неуклюжими, чтобы получать уведомления.
  • Функции NSDistributedNotificationCenter или CFNotificationCenter - кажутся наиболее "Mac-подобными" и довольно простыми способами работы. Однако мой код может потребоваться запустить как dylib, и, согласно этому оставшемуся без ответа вопросу , это может не сработать для меня.

Итак, есть ли у кого-нибудь какие-нибудь советы / подсказки / страшилки, использовавшие что-либо из вышеперечисленного, или даже более подходящие альтернативы, о которых я не думал, чтобы достичь того, что я хочу?

7
задан Community 23 May 2017 в 12:13
поделиться