I did say that there were ways to save/restore the original stdout... I know that open("CON") is technically wrong, but at the same time it works in most cases.
On 9/16/06, Arkady V.Belousov <[EMAIL PROTECTED]> wrote: > Hi! > > 16-Сен-2006 02:29 [EMAIL PROTECTED] (Blair Campbell) wrote to > freedos-user@lists.sourceforge.net: > > BC> Hi. It almost sounds to me like the destination file isn't getting > BC> flushed to the disk. I would recommend doing the recirection > BC> internally in the C program, and then you have direct control of the > BC> file. A simple close(1); open("blah", O_WRONLY); /* system() stuff > BC> here: */ blah blah blah close(1); open("CON", O_WRONLY); > BC> should do but there are also ways to 'save' the original stdout and > BC> restore it later. Get him to contact me for details. > >> BUT, if I do it this way: > >> command /c dir /b c:\testdir >d:\dirout.put > >> The file dirout.put has the directory output but CUT... it never > >> reaches the end of the output, it just cuts... > > This is bug in FreeCOM. And this is reason, why in my patches for > FreeCOM I was tried to move command.com placement into bin/ subdirectory, > else (buggy) command.com (may) interfere with building process, but by some > unknown reason you reject this part of patches. > > About manual redirecting: using open("CON") is wrong, because this > prevents using program with redirection. The more so, if program uses > stdio..h, this way is even more wrong. I think, better way is something > like: > > int redirfd = open ("d:\dirout.put", O_CREAT | O_TRUNC | O_RDWR, > S_IREAD | S_IWRITE); > if (redirfd != -1) { /* check for error */ > /* if using standard streams from stdio.h: */ > flushall (); /* flush all high level buffers */ > /* now privately store own stdout... */ > int oldstdout = dup (1); > /* ...and open redirection */ > dup2 (redirfd, 1); close (redirfd); > > ...now do system(), spwan*() or exec*()... > > dup2 (oldstdout, 1); close (oldstdout); > } > > ------------------------------------------------------------------------- > Using Tomcat but need to do more? Need to support web services, security? > Get stuff done quickly with pre-integrated technology to make your job > easier > Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo > http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 > _______________________________________________ > Freedos-user mailing list > Freedos-user@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/freedos-user > -- Fall is my favorite season in Los Angeles, watching the birds change color and fall from the trees. David Letterman (1947 - ) See ya ------------------------------------------------------------------------- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 _______________________________________________ Freedos-user mailing list Freedos-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/freedos-user