我需要从Erlang运行UNIX进程,并将TCP套接字设置为标准输入。那可能吗?Erlang:将tcp套接字作为标准输入传递给UNIX进程
现在我有一个TCP套接字,我从Ranch得到了,我可以得到它的文件描述符,但我不确定如何将它设置为我创建的UNIX进程的标准输入。透过open_port
documentation没有提供任何线索如何做到这一点。
我需要这样做的原因是我调用的过程是硬编码的,希望它的标准是一个套接字,如果不是,它会崩溃。这意味着我不能用open_port
打开它,并将TCP流代理到它。
我在Ubuntu 12.04上运行。
您是否考虑过创建FIFO?用os:cmd调用mkfifo,打开新文件用file:open打开,用os:cmd来调用外部进程?没有远程优雅,但应该做的伎俩。 – macintux
最终进程是否将FIFO看作TCP端口?现在它声明stdin是一个IPV4或IPV6套接字。不是我会做的,但我没有在该应用程序的专业知识...... – kjw0188