【发布时间】:2014-02-13 09:15:07
【问题描述】:
我需要从 Erlang 运行 UNIX 进程,并将 TCP 套接字设置为标准输入。这可能吗?
现在我有一个从Ranch 获得的 TCP 套接字,我可以获取它的文件描述符,但我不确定如何将它设置为我正在创建的 UNIX 进程的标准输入。浏览 open_port documentation 并没有为我提供任何关于如何做到这一点的线索。
我需要这样做的原因是我正在调用的进程被硬编码以期望它的标准是一个套接字,如果不是,它就会崩溃。这意味着我不能只用open_port 打开它并将TCP 流代理给它。
我在 Ubuntu 12.04 上运行。
【问题讨论】:
-
您考虑过创建 FIFO 吗?用os:cmd调用mkfifo,用file:open打开要写入的新文件,用os:cmd调用外部进程?不是很优雅,但应该可以解决问题。
-
最终进程是否会将 FIFO 视为 TCP 端口?现在它断言 stdin 是 IPV4 或 IPV6 套接字。不是我会做的,但我没有该应用程序的专业知识......
标签: sockets erlang file-descriptor