杀死连接到erlang端口的进程

Woj*_*ski 8 erlang

我想写一个某种主管,我正在尝试实现关闭外部程序的功能.外部进程通过端口连接到erlang的代码.我不知道如何关闭这个程序,通过发送信号或其他任何东西.关闭端口不是解决方案,因为我已经检查过许多程序没有在SIGPIPE上退出.你有什么想法怎么做吗?

Tom*_* H. 9

您可以使用

{os_pid, OsPid} = erlang:port_info(Port, os_pid). 
Run Code Online (Sandbox Code Playgroud)

在操作系统中获取进程的pid(参见http://erlang.org/doc/man/erlang.html#port_info-1 - 我认为你可能需要最新版本的Erlang来包含它,我认为apt-get在Ubuntu 12.04上安装的那个还不够新,我知道R15B02虽然有,但是然后

os:cmd(io_lib:format("kill -9 ~p", [OsPid])).
Run Code Online (Sandbox Code Playgroud)

杀死它(http://erlang.org/doc/man/os.html#cmd-1).