From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-0.3 required=5.0 tests=BAYES_00, REPLYTO_WITHOUT_TO_CC autolearn=no autolearn_force=no version=3.4.4 X-Google-Thread: 103376,1a7be6e64c98018a X-Google-Attributes: gid103376,public X-Google-Language: ENGLISH,ASCII Path: g2news1.google.com!news3.google.com!news.glorb.com!npeer.de.kpn-eurorings.net!newsfeed.arcor.de!news.arcor.de!not-for-mail From: "Dmitry A. Kazakov" Subject: Re: Spawn : Get the output of the called program Newsgroups: comp.lang.ada User-Agent: 40tude_Dialog/2.0.14.1 MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 8bit Reply-To: mailbox@dmitry-kazakov.de Organization: cbb software GmbH References: <6000144.7FP8lPn99l@linux1.krischik.com> Date: Thu, 7 Apr 2005 11:33:56 +0200 Message-ID: <1ei48s752le10$.13dxln0th99sd$.dlg@40tude.net> NNTP-Posting-Date: 07 Apr 2005 11:33:55 MEST NNTP-Posting-Host: a1272f00.newsread2.arcor-online.net X-Trace: DXC=nY29gF:VPlmA>\Y32QN0_hQ5U85hF6f;djW\KbG]kaMh]kI_X=5KeafV On Wed, 06 Apr 2005 19:08:07 +0200, Martin Krischik wrote: > Dmitry A. Kazakov wrote: > >> 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. > > Excuse me! I wrote AdaCL.OS.Command explicitly for that purpose - to attach > to all three pipes: > > -- > -- Attach a Text_IO file to the Standart Input of the process > -- > procedure Attach_In ( > -- Object itself. > This : in out Object'Class; > -- Text IO to be attached > File : in out Ada.Text_IO.File_Type); > > -- > -- Attach a Text_IO file to the Standart Output of the process > -- > procedure Attach_Out ( > -- Object itself. > This : in out Object'Class; > -- Text IO to be attached > File : in out Ada.Text_IO.File_Type); > > -- > -- Attach a Text_IO file to the Error Output of the process > -- > procedure Attach_Error ( > -- Object itself. > This : in out Object'Class; > -- Text IO to be attached > File : in out Ada.Text_IO.File_Type); > >> Further, >> the stderr pipe should be read out asynchronously from a parallel task. > > And yes AdaCL.OS.Command has asynchronously execution as well: > > -- > -- Execution Mode > -- > type Mode > is ( > -- Start Process syncronous. > Sync, > -- Start Process asyncronous. > Async, > -- Start Process asyncronous and redirect standart in and > -- standart out. > In_Out); And which one need to be used for stdin + stdout + stderr? What has In_Out to do in the company of Sync/Async? Why the same object cannot be both Sync and Async? If it cannot, then why this is not mapped to types? If it can, why then there is one primitive operation for both modes?... >> 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. > > -- > -- Wait for the end of the command - only for Async and In_Out > -- > procedure Wait ( > -- Object itself. > This : in out Object); > > I know that AdaCL is not perfect - but before you bash it you should at > least pick some feature which really isn't there. I didn't critiqued a lack of features, but the design. It is still too low level. After all, dup, dup2, fork, waitpid are also here... -- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.de