
Port相关命令如下:
打开端口:Port=open_port(PortName,PortSettings).
发送数据:Port ! {PidC, {command, Data}}.
转换连接进程:Port ! {PidC, {connect, Pid}}.
关闭端口:Port ! {PidC, close}.
接收数据:receive {Port,{data,Data}} -> …. end.
例如下面的代码,Erlang先打开一个端口,传送一串字符串给外部的C++程序,外部程序原样返回该字符串:
先看看外部的C++代码:#include <iostream>
using namespace std;
int main(){
char str[128];
cin.getline(str,128);
cout << "Data receive in C : " << str << endl;
}
然后系Erlang的代码:
-module(test).
-export([start/0]).
start() ->
%打开端口并接收数据
Port=open_port({spawn,”./ctest”},[{line,1024}]),
Port!{self(),{command,“I am Oscar! 123456\n”}},
receive
{Port,{data,{eol,Msg}}} ->
io:fwrite(”Receive : ~s\n”,[Msg])
end,
%关闭端口
Port!{self(),close}.
两段代码编译后在erlang虚拟机中运行:
1> test:start().
Receive : Data receive in C : I am Oscar! 123456
{<0.31.0>,close}
0 意見