Tag: erlang

Erlang中的tcp_socket行为不一致

为了一次读取输入1个字符,我写了一个使用ssty raw ac程序。 我使用这个character.c程序来调用一个erlang文件, naive_tcp.erl通过socket将消息发送到同一台机器上的监听服务器。 我希望这个服务器naive_tcp2.erl用26行降序整数和80字符长字符串写回2“|” 管道在其中,以便它在80×26终端上排队。 相反,会发生非常不一致的数据打印。 运行./character.c ,然后每隔几秒按键盘上的一个键,你可以看到输出以”26″开头并下降到”1″ ,但你可以看到它下降到”23″ , “21”或仅”24″ 。 character.c: #include #include int main(void){ system (“clear”); int c; /* use system call to make terminal send all keystrokes directly to stdin */ system (“/bin/stty raw”); while((c=getchar())!= ‘.’) { char command[100]; sprintf(command, “erl -noshell -run naive_tcp go -s erlang halt”); system(command); […]

Erlang进程在试图自杀时挂起

我用这个脚本运行我的erlang进程 #!/bin/sh stty -f /dev/tty icanon raw erl -pa ./ -run thing start -run init -noshell stty echo echok icanon -raw 我的Erlang流程: -module(thing). -compile(export_all). process(<>) -> io:fwrite(“Ch: ~w”, [<>]), exit(normal); process(Ch) -> io:fwrite(“Ch: ~w”, [Ch]), get_char(). get_char() -> Ch = io:get_chars(“p: “, 1), process(Ch). start() -> io:setopts([{binary, true}]), get_char(). 当我运行./invoke.sh ,我按下键并按预期看到字符打印。 当我点击逃生时,shell窗口停止响应(我必须从终端关闭窗口)。 为什么会这样?

在Erlang C NIF中分配内存

为什么会使用 void *enif_alloc_resource(ErlNifResourceType* type, unsigned size) 而不是 void *enif_alloc(size_t size) 当试图从Erlang C NIF分配内存时? 参考文献没有详细说明原因。 http://www.erlang.org/doc/man/erl_nif.html#enif_alloc

为Erlang提取C函数签名

我想知道从源代码中提取c(最终是c ++)函数名,参数及其类型最合适的工具是什么。 我想使用可以尽可能自动化的工具。 我想提取签名类型,然后让另一个用Erlang编写的程序读取输出。 我的目标是使用此信息在Erlang中构建等效的C类型/签名(使用ei)。 我希望这个过程适用于任何C文件,所以我不能使用任何硬编码的东西。 我发现很多工具看起来像CLang,CScope和ANTLR等等,但我不知道它们中是否有任何工作或者有更好的方法。 谢谢。

Erlang – C和Erlang

在erlang中有一些常见的库函数比它们的c等价物慢得多。 是否可以让c代码进行二进制解析和数字运算,并使用erlang生成进程来运行c代码?

C和Erlang:Erlang Port示例

免责声明:该问题的作者具有Erlang的平均知识和C的基本知识。 我现在正在阅读互操作性教程用户指南 。 我已成功编译了complex.c示例,它与Erlang端口一起使用没有任何问题。 但是,我想了解实际的C代码是如何工作的。 我一般都理解它:在示例中,它从标准输入读取2个字节并检查第一个字节。 根据第一个字节,它调用foo或bar函数。 这是我现在对它的理解的极限。 所以,如果我们同时使用erl_comm.c : /* erl_comm.c */ typedef unsigned char byte; read_cmd(byte *buf) { int len; if (read_exact(buf, 2) != 2) return(-1); len = (buf[0] <> 8) & 0xff; write_exact(&li, 1); li = len & 0xff; write_exact(&li, 1); return write_exact(buf, len); } read_exact(byte *buf, int len) { int i, […]

Erlang NIF测试 – OS X Lion

我正在尝试在Mac OS X Lion上从Erlang( http://www.erlang.org/doc/man/erl_nif.html )编译NIF测试。 我无法编译。 我错过了编译器标志吗? 这是我得到的错误: Computer:~ me $ gcc -fPIC -shared -o niftest.so niftest.c -I /usr/local/Cellar/erlang/R14B02/lib/erlang/usr/include/ Undefined symbols for architecture x86_64: “_enif_make_string”, referenced from: _hello in ccXfh0oG.o ld: symbol(s) not found for architecture x86_64 collect2: ld returned 1 exit status 我也用-m32尝试了这个,但它说没有i386架构。 谢谢!

在Erlang中运行C代码块

如何从Erlang运行C代码块? (或者从erlang调用C函数?)