[erlang-questions] closing a port doesn't kill the connected process?

Richard Andrews <>
Mon Mar 22 23:59:24 CET 2010


On Tue, Mar 23, 2010 at 6:00 AM, Jacob Vorreuter
<> wrote:
> I'm starting a redis server instance by opening an Erlang port.  When the Erlang process exits or I explicitly close the port the os process is not killed.  Is there a way to accomplish that?
>
> 1> Port = erlang:open_port({spawn, "redis-server"}, [binary, exit_status]).
> #Port<0.429>
> 2> erlang:port_close(Port).
> true
>
> $ ps -ax | grep redis-server
> 31374 ??         0:00.02 redis-server

If it's always UNIX perhaps you could insert a pipe forwarder process
which kills redis-server on EOF; and call:

open_port({spawn, "pipe-wrapper redis-server"}, [binary, nouse_stdio,
exit_status])

nouse_stdio would be required because pipe-wrapper would be talking
stdin/stdout to redis-server.

Implementing pipe-wrapper is up to you.

--
  Rich


More information about the erlang-questions mailing list