On Sat, 07 Dec 2013 23:03:10 +0100 Chris Cain wrote:
On Friday, 6 December 2013 at 00:24:22 UTC, Hugo Florentino wrote:
Hi,
I was trying to do something like this (using dmd.2.064.2 both
from Windows and Linux), but if nothing is passed from stdin
and no parameter is provided, the application freezes:
...snip...
Where is the problem?
Regards, Hugo
I'm not sure I understand the problem. Your program works as I
think you describe it should on my Linux box:
---
zshazz@manjarox ~/projects/explore % cat /dev/null | rdmd
inputStuff.d
No argument passed as parameter or from stdin.
zshazz@manjarox ~/projects/explore % echo -n "" | rdmd
inputStuff.d
No argument passed as parameter or from stdin.
zshazz@manjarox ~/projects/explore % echo -n "test" | rdmd
inputStuff.d
Argument passed from stdin succesfully stored in variable s.
zshazz@manjarox ~/projects/explore % rdmd inputStuff.d blah.txt
Argument passed as parameter succesfully stored in variable s.
---
If you just run it (via `rdmd inputStuff.d`) it pauses and waits
for some sort of input, but that's expected. Using `ctrl-d`
results in "No argument passed as parameter or from stdin." as
expected in that case.
Could you describe what you're doing exactly that causes it to
freeze?
Actually it does not freeze, it is expecting user input as you said. I
simply didn't realize this (that's the reason behind my choice of
words).
What I intend is for my application to simply display a message if no
parameter was given and it was not piped after another command. You
know, like the average messages you get when typing alone a command
which expects some form of input.
I don't know how detect input sent to it through a pipe without
requiring user interaction, I have not been able to find a working
example in the documentation, in the source code or using search
engines.