| Thread overview | |||||
|---|---|---|---|---|---|
|
December 06, 2013 regading detection of stdin | ||||
|---|---|---|---|---|
| ||||
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:
import std.stdio, std.file: readText;
int main(string[] args) {
string s;
switch (args.length) {
case 1:
if ((s = stdin.readln()) is null)
writeln("No argument passed as parameter or from stdin.");
else
writeln("Argument passed from stdin succesfully stored in variable s.");
scope (failure) {
writeln("Error reading from stdin.");
return -1;
}
break;
case 2:
s = readText(args[1]);
scope (failure) {
writeln("Error reading from file passed as parameter.");
return -2;
}
writeln("Argument passed as parameter succesfully stored in variable s.");
break;
default:
writeln("Incorrect number of parameters. Maximum is one.");
return -3;
}
return 0;
}
Where is the problem?
Regards, Hugo
| ||||
December 06, 2013 Re: regading detection of stdin | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Hugo Florentino | On Friday, 6 December 2013 at 00:24:22 UTC, Hugo Florentino wrote:
> if nothing is passed from stdin and no parameter is provided, the application freezes:
Does it freeze or just wait for you to press enter on the keyboard?
| |||
December 07, 2013 Re: regading detection of stdin | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Hugo Florentino | 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?
| |||
Copyright © 1999-2021 by the D Language Foundation
Permalink
Reply