Re: stdin/stdout in console applications
Edi Weitz <[email protected]>
| Newsgroups | gmane.lisp.corman |
|---|---|
| Message-ID | <[email protected]> |
Edi Weitz wrote: > Hi! > > This message will show my complete ignorance about Windows issues and is > probaly only marginally related to Corman Lisp but, anyway, here it goes... > > I want/need to write a little console application that acts like a Unix > "filter", i.e. it reads from stdin and writes to stdout. I wanted to > start small and wrote the simplest app I could imagine - something that > just lets everything go through. So, here's my only function: > > (defun main () > (loop for line = (read-line *standard-input* nil) > while line > do (format *standard-output* "~A~%" line) > (force-output *standard-output*)) > (print 'done *standard-output*) > (force-output *standard-output*)) > > I created an EXE file with > > (save-application "foo" 'main :console t :static t) > > However, this raises lots of questions: > > 1. If I start this from a console window it does what I expect, i.e. it > echos back the lines I type. But I don't know how to stop it - neither > Ctrl-D nor Ctrl-Z work. How do I send an EOF from the console? > > 2. If I start it like "foo.exe < some_file.txt" I see nothing at all. > The program just hangs. What's happening? > > 3. If I start it like "dir | foo.exe" I see the output from dir but the > programm crawls. It also hangs at the end of the directory listing and > doesn't stop nor does it show the DONE line. Again, what's happening? > And why is it so slow? > > 4. Is this the right way to write such a program? I mean, can I expect > the program to end when my MAIN function is finished or do I have to > call some kind of EXIT function? > > 5. I recall having read something about setting the mode (?) of stdin > and stdout to binary under Windows. Is that an issue here? > > Sorry for (almost) half a dozen of dumb questions. > > Thanks in advance, > Edi. Just tried this with Lispworks and (deliver 'main "foo" 0 :console t) and at least 2. and 3. from above work fine there. The generated EXE also isn't slow when fed the output of dir. Edi. ------------------------ Yahoo! Groups Sponsor ---------------------~--> Get 128 Bit SSL Encryption! http://us.click.yahoo.com/LIgTpC/vN2EAA/xGHJAA/SyjtlB/TM ---------------------------------------------------------------------~-> To unsubscribe from this group, send an email to: [email protected] Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/