delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2009/01/04/14:29:08

X-Recipient: archive-cygwin AT delorie DOT com
X-SWARE-Spam-Status: No, hits=-1.3 required=5.0 tests=AWL,BAYES_00,SARE_MSGID_LONG40,SPF_PASS
X-Spam-Check-By: sourceware.org
Message-ID: <2ca21dcc0901041128p575daca2xefee07e52e10c147@mail.gmail.com>
Date: Sun, 4 Jan 2009 19:28:55 +0000
From: "Dave Korn" <dave DOT korn DOT cygwin AT googlemail DOT com>
To: cygwin AT cygwin DOT com
Subject: Re: printf goes to serial port?
In-Reply-To: <4960ED6A.7030303@xs4all.nl>
MIME-Version: 1.0
References: <4960ED6A DOT 7030303 AT xs4all DOT nl>
Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Id: <cygwin.cygwin.com>
List-Unsubscribe: <mailto:cygwin-unsubscribe-archive-cygwin=delorie DOT com AT cygwin DOT com>
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com

Bob van Loosen wrote:
> Because of this, the app doesn't get the standard file descriptors for
> stdin, stdout and stderr, also when you open a file the file descriptors
> start at 0.
>
> So what happens is, my app opens a config file, which then becomes
> stdin, then it opens a serial port, which becomes stdout, causing all
> printf statements to go out the serial port.
> The solution is quite simple, just disable all printf statements for a
> cygwin build.

  Well... that requires editing every single printf in the whole program, no?

  It might be easier to just at the start of main() open the first three file
descriptors, so that 0, 1 and 2 are allocated.  If you open 0 from /dev/null
in read mode and open 1 and 2 for write to /dev/null, all your stdio should
behave sensibly.  Then if you decide you want the printfs after all, you can
just change the open to point to a real file and bingo!  Instant log file!

> I have no idea how to get console output when using the
> -mwindows flag, but I don't really need it.

  You probably need to call AllocConsole and open stdio channels to
CONIN$/CONOUT$, but that's off the top of my head and without looking it up.

    cheers,
      DaveK

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019