comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Spawn : Get the output of the called program
Date: Wed, 6 Apr 2005 17:13:35 +0200
Date: 2005-04-06T17:13:35+02:00	[thread overview]
Message-ID: <c1m8xs96i37y.108myta3hw08w$.dlg@40tude.net> (raw)
In-Reply-To: pan.2005.04.06.14.43.31.382300@a2lf.org

On Wed, 06 Apr 2005 16:43:31 +0200, Jean-Baptiste CAMPESATO wrote:

> Le Wed, 06 Apr 2005 12:21:14 +0200, Jean-Baptiste CAMPESATO a �crit�:
> 
>> I want to called a programm (like the Spawn Procedure in GNAT.OS_lib) but
>> i wannt to get the output fo this program.
>> Do you know how can i get the output with Spawn, or another
>> function/procedure to do that ?
>> Thanks
> 
> Thanks everybody :).
> I will read http://adacl.sourceforge.net/ and a doc about pipes.

I don't like the design of either library because many programs heavily use
stderr. For them to make it useful one needs all three pipes. Further, the
stderr pipe should be read out asynchronously from a parallel task.
Otherwise, you are risking to fall into a deadlock if the pipe buffer size
is limited, which is often the case. Therefore, you need two procedures:
Spawn to invoke the program and Wait to wait for its completion. Then when
you read from the stdout take care about End_Error. Normally after
End_Error, you just call Wait. Also the procedure Wait should raise an
exception if stderr was not empty.

P.S. We have implemented it for Unix/Posix with no GNAT.OS_lib, but alas it
is proprietary.

-- 
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de



  reply	other threads:[~2005-04-06 15:13 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-04-06 10:21 Spawn : Get the output of the called program Jean-Baptiste CAMPESATO
2005-04-06 10:52 ` Jean-Baptiste CAMPESATO
2005-04-06 11:15   ` Pascal Obry
2005-04-06 11:24     ` Jean-Baptiste CAMPESATO
2005-04-06 13:36   ` Martin Krischik
2005-04-06 13:34 ` Martin Krischik
2005-04-06 14:09 ` Marc A. Criley
2005-04-06 14:43 ` Jean-Baptiste CAMPESATO
2005-04-06 15:13   ` Dmitry A. Kazakov [this message]
2005-04-06 17:08     ` Martin Krischik
2005-04-07  9:33       ` Dmitry A. Kazakov
2005-04-12  9:28 ` Duncan Sands
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox