Я ищу самый простой или наиболее подходящий способ в 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 другого процесса (вот почему мне нужен какой-то общий объект), поэтому я не могу использовать что-либо, что потребовало бы этого.
Пока в моем коротком списке:
sem_open
, sem_wait
и sem_post
для создания / открытия, ожидания и передачи сигналов событие соответственно. Кажется, довольно просто использовать. notify (3)
- кажутся довольно простыми в использовании, если не сказать немного неуклюжими, чтобы получать уведомления. NSDistributedNotificationCenter
или CFNotificationCenter
- кажутся наиболее "Mac-подобными" и довольно простыми способами работы. Однако мой код может потребоваться запустить как dylib, и, согласно этому оставшемуся без ответа вопросу , это может не сработать для меня. Итак, есть ли у кого-нибудь какие-нибудь советы / подсказки / страшилки, использовавшие что-либо из вышеперечисленного, или даже более подходящие альтернативы, о которых я не думал, чтобы достичь того, что я хочу?