so the answer is that I must rely on the user to indicate what they are
doing.  And if the user gives a '-' and there is no pipe than the
program will hang.  This is not so bad, but I was just hoping there was
a better way.
I think though there should be some way to avoid this.  I don't know if
there is lower level information here that we cannot extract in ruby,
but I also wonder if there is a way to avoid this in Ruby: for example
read from STDIN for just one second, and then determine if any data was
read.  I think though in UNIX that when you pipe programs from the
shell that all the programs are opened up immediately, so even this
could have problems.