[fpc-devel] StdOut capture for FPC RTL

Jonas Maebe jonas.maebe at elis.ugent.be
Thu Nov 25 18:57:36 CET 2010

On 25 Nov 2010, at 13:21, Jonas Maebe wrote:

> On 25 Nov 2010, at 12:24, Anton Kavalenka wrote:
>> What I have to do to properly initialize these defaults for new threads AFTER capturing StdOut?
> Store a copy of your stdout in a global variable, and after creating a new thread
>  close(stdout);
>  stdout:=myglobalstdout;
> (and maybe the same for "output").

Actually, that won't work because the different threads will then work on a common buffer but with distinct pointers into it. A better solution is probably to do this in the intialisation code of each thread instead:

{$ifdef unix}
{$elsif defined(MSWINDOWS)}
  { this is a copy of do_close() from the rtl, I don't know whether
    a new handle from a thread can actually have any of these values }
  if (handle <> StdInputHandle) and
     (handle <> StdOutputHandle) and
     (handle <> StdErrorHandle) then
  {$error Add support for this platform}



More information about the fpc-devel mailing list