<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Guys,<div><br><div><div>On 27 Sep 2012, at 13:18, Erik Søe Sørensen wrote:</div><blockquote type="cite"><div class="gmail_quote">2012/9/27 Jesper Louis Andersen <span dir="ltr"><<a href="mailto:jesper.louis.andersen@erlang-solutions.com" target="_blank">jesper.louis.andersen@erlang-solutions.com</a>></span><br><blockquote class="gmail_quote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex; position: static; z-index: auto; ">
I remember this was something I had going. Let me dig code:<br>
<br>
----<br>
#!/bin/sh<br>
<br>
(cat && kill 0) | opentracker $*<br></blockquote><div>Nice incantation. I was just about to suggest using a wrapper program, but I probably wouldn't have thought of that variation.<br> <br></div><blockquote class="gmail_quote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex; position: static; z-index: auto; ">

----<br>
<br>
So the trick is that the … && kill 0 part sends a kill signal to all processes in the current process group. This lets you stop another process since cat(1) understands what happens when stdin is closed and handles it accordingly.<br>

<br>
I've only used it in tests though so it may need work for real programs<br></blockquote><div>Such as replacing "&&" with ";" ? :-)<br>Just in case someone came along and killed the cat. (Can't at the moment imagine other scenarios where cat would exit with non-zero return values, but they probably exist.)<br>
<br>Also, replace $* with "$@" (including the quotes), for proper handling of parameters with spaces in them and such.<br></div></div></blockquote></div><br></div><div>Thanks both of you, I guess that I could drop this in in front of the required invocation, so you get the required behaviour. The tricky part here is that the code calling open_port/2 is kind of a generic 'run a script and monitor things' process, so I'll need to experiment with this a bit. Thanks for the suggestions anyway - I'll certainly give this a try.</div></body></html>