Sto cercando il modo più semplice o più appropriato su Mac OS X per semplicemente "segnalare" o notificare un processo da un altro. Venendo da uno sfondo di Windows questo potrebbe essere ottenuto utilizzando qualcosa come il seguente.Equivalente Mac OS X di CreateEvent() con oggetto denominato per la comunicazione tra processi?
In processo A:
// create named event
hCreatedEvent = CreateEvent(NULL, TRUE, FALSE, "MyUniqueNamedEvent");
// wait for it to be signalled
WaitForSingleObject(hCreatedEvent, INFINITE);
e poi nel processo B:
// open the existing named event
hOpenedEvent = OpenEvent(EVENT_ALL_ACCESS, FALSE, "MyUniqueNamedEvent");
// signal it
SetEvent(hOpenedEvent);
Così, quando viene eseguita la chiamata SetEvent
in Process B, processo A potrebbe uscire dal WaitForSingleObject
e fare un po 'di lavoro .
Non ho bisogno di inviare effettivamente dati, quindi ho escluso cose come Named Pipes (FIFO) o prese ecc. Come un po 'eccessivo (ho dato un'occhiata a this similar question, ma di cui hanno bisogno per inviare dati, la mia domanda è leggermente diversa). Allo stesso modo, non conoscerò il PID dell'altro processo (che è il motivo per cui ho bisogno di una specie di oggetto condiviso), quindi non posso usare nulla che lo richieda.
Finora sulla mia lista è:
- POSIX semafori - utilizzando
sem_open
,sem_wait
esem_post
per creare/aperto, aspettare e segnalare l'evento, rispettivamente. Sembra abbastanza semplice da usare. - Le funzioni BSD
notify(3)
- appaiono abbastanza semplici da usare, se non un po 'goffe da consumare notifiche. - Le funzioni
NSDistributedNotificationCenter
o- appare il modo più "Mac like" di fare le cose e abbastanza semplice. Tuttavia, il mio codice potrebbe dover essere eseguito come dylib e in base a this unanswered question, potrebbe non funzionare per me.
Quindi, qualcuno ha qualche consiglio/suggerimento/racconto dell'orrore che ha utilizzato uno dei precedenti, o alternative ancora più appropriate a cui non ho pensato di ottenere quello che voglio?