[erlang-questions] open_port CPU "leak"

Carsten Schultz <>
Tue Nov 4 11:00:46 CET 2008


On Tue, Nov 04, 2008 at 01:16:07AM -0500, Kevin wrote:
> 
> Hello, this function I wrote slowly increases CPU usage if called in a 
> fairly tight loop.  Even replacing Command
> with "echo hello" will not fix the problem.  I also tried called 
> port_close but I got a weird error, I think because
> the port was already closed.  Is this the way its done?  So far I've 
> found no better explanation in the books or docs? 
> Thanks for any feedback.
> 
> get_sha(Str) ->
> 
>     Command = "echo '" ++ Str ++ "' | sha1sum",
>     Port = open_port({spawn, Command}, [exit_status]),
>     Port ! {self(), {command, []}},
>     receive
>     {Port, {data, Data}} ->
>             %% chop off junk at end of sha1sum output, what is that crap???
>             string:substr(Data, 1, string:len(Data)-4);
>          {Port, {exit_status, Status}} -> %% exited without a result
>             {error, Status}
>     end.

Are there other messages sent that you are not interested in and that might pile up in the mail box?  Try adding

          OtherMsg -> diagnostic output

Best,

Carsten

-- 
Carsten Schultz (2:38, 33:47)
http://carsten.codimi.de/
PGP/GPG key on the pgp.net key servers, 
fingerprint on my home page.



More information about the erlang-questions mailing list