how to kill a port's external process?

Garrett G. Hodgson garry@REDACTED
Mon Jul 23 02:56:51 CEST 2001

i'm building a little gui wrapper around a command line audio player.
i've got an erlang process that calls open_port() to spawn the external
player, but it doesn't actually send/receive anything to it over stdio.

when i send the controlling process a stop message, it sends a { self(), close }
message to the port, then receives the {Port, closed} reply and exits.
but the external player doesn't stop playing.  if i kill it from another
window before sending the stop, the controlling process gets the proper
exit_status message, so i know they're connected.  i can even exit erlang
entirely, and it keeps playing until i kill it.

so, is there a clean way to kill this beast?  i can think of some kludgey
ways, like gathering the output of ps and constructing a unix command to 
kill it.  but it seems like there ought to be a better way?  can someone
point me in the right direction?


Garry Hodgson                   And when they offer
Senior Hacker                    golden apples
garry@REDACTED                are you sure you'll refuse?
Software Innovation Services    Heaven help the fool.
AT&T Labs 

More information about the erlang-questions mailing list