2011-02-05 3 views
6

Я хочу внедрить Erlang VM в код C ... Я знаком с портами, связанными с драйверами и т. Д. Я хочу, чтобы программа C запускала Erlang VM, а затем передавала сообщения процессам Erlang, и эти сообщения передаются обратно на C-код. Я не хочу, чтобы erlang VM была первой, которая запускалась сначала, а затем иногда вызывает код C. У меня есть причины.
Я знаю, что это отрицательно влияет на гарантии стабильности, данные Erlang, что означает, что при сбое главного кода C он также будет сноситься с помощью Erlang VM, так как они работают в одном процессе. Im хочет жить с этими событиями ...erlang встроен в C

это даже возможно?

спасибо

+1

+1 для уравновешивания нисходящего потока без комментариев. Это кажется разумным вопросом, представляющим интерес для разработчиков erlang. –

+0

Важно также, почему вы хотите это сделать? Если вы только скажете «у вас есть свои причины», то вряд ли он получит большую часть ответов. Я имею в виду, что это возможно, так как у вас есть источник. Но если это имеет смысл, это еще один вопрос. Кроме того, как взаимодействовать с вашим кодом C изменяется так, как вы хотите его интегрировать. –

ответ

2

Единственный разумный способ сделать это - загрузить код C из Erlang VM, а не наоборот.

Это невозможно из коробки, но поскольку у вас есть доступ к источнику Erlang, вы можете сделать все, что захотите, если захотите потратить много времени на изменение кода. Это нехорошее использование вашего времени, чтобы пойти по этому пути.

+0

Да, я как бы понял, что вчера вечером ... спасибо за подтверждение. кажется, что erlang на самом деле является конечным контроллером, у него нет выбора, кроме как все, что ему было начато;)). Я сердце erlang;)) – deepblue

3

Проще всего было бы просто запустить его как отдельный процесс, а затем использовать стандартный ввод и стандартный вывод для общения. Просто прочитав документы любой платформы, на которую настроен таргетинг, вы узнаете, как это сделать.

+0

Я знаком с этим подходом ... Сокеты домена также являются альтернативой или напрямую связаны с файлами памяти ... моя цель состоит в том, чтобы совместно использовать одно и то же пространство памяти между пользовательским кодом C и самой виртуальной машиной Erlang ... ОС ядро никогда не будет затронуто для обмена сообщениями между эрлангом и кодом C, без переключения контекста и т. д. – deepblue

Смежные вопросы