2011-02-05 21 views
6

Estoy buscando incrustar la máquina virtual Erlang en el código C ... Estoy familiarizado con los puertos, controladores de linkedin, etc. Quiero que el programa C inicie la máquina virtual Erlang, y luego pase los mensajes a los procesos de Erlang, y hacer que esos mensajes pasen nuevamente al código C. No quiero que la máquina virtual de erlang sea la que comienza primero y luego invoca el código C ocasionalmente. Tengo mis razones.
Sé que esto afecta negativamente a las garantías de estabilidad dadas por Erlang, lo que significa que cuando el código maestro C falla, también eliminará la VM de Erlang, ya que se están ejecutando en el mismo proceso. Estoy dispuesto a vivir con esas ocurrencias ...erlang incrustado en C

¿Esto es posible?

agradecimiento

+1

+1 para equilibrar el voto sin comentario. Parece una pregunta razonable, de interés para los desarrolladores de erlang. –

+0

Importante también es la razón por la que desea hacer esto? Si solo dice "usted tiene sus razones", es poco probable que saque el mayor provecho de las respuestas. Quiero decir que es posible, ya que tienes la fuente. Pero si tiene sentido es otra pregunta. Además, la forma de interactuar con su código C cambia la forma en que desea integrar esto. –

Respuesta

2

La única manera sensata de hacerlo es cargar el código C de la máquina virtual de Erlang, no al revés.

No es posible sacarlo de la caja, pero como tiene acceso a la fuente de Erlang es claramente posible hacer lo que quiera si está dispuesto a pasar mucho tiempo modificando el código. No es un buen uso de tu tiempo para seguir este camino.

+0

Sí, creo que anoche ... gracias por la confirmación. parece que erlang es realmente el controlador supremo, no hay más remedio que tener todo lo demás iniciado por él;)). I corazón erlang;)) – deepblue

3

La forma más fácil sería simplemente lanzarlo como un proceso separado, y luego usar entrada y salida estándar para comunicarse. Simplemente leyendo los documentos de la plataforma a la que apuntas te permitirá saber cómo hacerlo.

+0

Estoy familiarizado con ese enfoque ... los sockets de dominio también son una alternativa, o usan directamente archivos mapeados en memoria ... mi objetivo es compartir el mismo espacio de memoria entre el código C personalizado y la VM Erlang en sí ... el sistema operativo kernel nunca sería tocado por la comunicación de E/S entre el erlang y el código C, sin cambio de contexto, etc ... – deepblue