Unix domain sockets sont votre ami.
Un socket de domaine Unix ou socket IPC (socket de communication inter-processus) est une communication de données de point de terminaison qui est similaire à une prise Internet, mais ne pas utiliser un protocole de réseau pour la communication . Il est utilisé dans les systèmes d'exploitation POSIX pour la communication inter-processus .
Vous réservez un nom pour votre canal de communication, comme /myapp/ipc
, puis les deux processus ouverts qui adresse à l'aide d'une prise UNIX:
struct sockaddr_un local;
int len;
s = socket(AF_UNIX, SOCK_STREAM, 0);
local.sun_family = AF_UNIX;
strcpy(local.sun_path, "/myapp/ipc");
len = strlen(local.sun_path) + sizeof(local.sun_family);
bind(s, (struct sockaddr *)&local, len);
vous pouvez utiliser listen
ou connect
ou tout autre chose dans le famille de douilles. C'est un peu de travail, mais c'est le meilleur moyen d'atteindre IPC sous Linux. Comme Erlang est juste un bon langage pour spécifier les petits serveurs (processus) qui communiquent sur les canaux nommés (processus), ce modèle devrait vous sembler confortable.
... donc je générer un processus et passer une référence à une socket ouverte et écoute dans les arguments? – jldupont
Ou utilisez un socket nommé (voir 'mkfifo'). Pour la communication bidirectionnelle, il suffit d'en avoir deux ... – Wim