2011-02-05 91 views
6

我正在尋找將Erlang VM嵌入到C代碼中......我熟悉端口,linkedin驅動程序等。我想讓C程序啓動Erlang VM,然後將消息傳遞給Erlang進程,並讓那些消息傳遞迴C代碼。我不想讓erlang虛擬機成爲先啓動然後偶爾調用C代碼的虛擬機。我有我的理由。
我知道這對Erlang給出的穩定性保證有負面影響,這意味着當主C代碼崩潰時它也會使Erlang VM失效,因爲它們在同一個進程中運行。我願意忍受這些事件...erlang嵌入到C

這甚至有可能嗎?

謝謝

+1

+1以平衡downvote而不發表評論。這似乎是一個合理的問題,對erlang開發者來說很有意思。 – 2011-02-06 10:35:44

+0

重要的是你爲什麼要這樣做?如果你只說「你有你的理由」,那麼它不太可能從答案中獲得最大的回報。我的意思是確定它是可能的,因爲你有源頭。但是,如果它是有道理的是另一個問題。另外,如何與你的C代碼進行交互改變了你想要整合的方式。 – 2011-02-06 12:24:11

回答

2

唯一可行的方法是從Erlang VM加載C代碼,而不是相反。

這是不可能的,但是由於您可以訪問Erlang源代碼,如果您願意花費大量時間修改代碼,顯然可以做任何您想做的事情。沿着這條路走下去並不是一個好時間。

3

最簡單的方法是隻啓動它作爲一個單獨的進程,然後使用標準輸入和stdout溝通。只要閱讀您所定位的任何平臺的文檔,就可以讓您知道如何做到這一點。

+0

我熟悉這種方法......域套接字也是一種替代方案,或直接使用內存映射文件......我的目標是在自定義C代碼和Erlang虛擬機本身之間共享相同的內存空間......操作系統內核永遠不會被觸及erlang和C代碼之間的通信I/O,沒有上下文切換,等等...... – deepblue 2011-02-06 02:32:39