comp.lang.ada
 help / color / mirror / Atom feed
From: Victor Porton <porton@narod.ru>
Subject: Re: Execute an OS command and capture output
Date: Mon, 13 Nov 2017 22:16:02 +0200
Date: 2017-11-13T22:16:02+02:00	[thread overview]
Message-ID: <oucui1$ohv$1@gioia.aioe.org> (raw)
In-Reply-To: oucu0v$nj4$1@gioia.aioe.org

Dmitry A. Kazakov wrote:

> On 2017-11-13 19:52, Victor Porton wrote:
>> Dmitry A. Kazakov wrote:
>> 
>>> On 2017-11-13 17:38, Victor Porton wrote:
>>>> I need a (preferably portable, but only Linux would be well) way to
>>>> execute an OS command with some input in stdin which I provide and
>>>> capture the output from stdout.
>>>
>>> It is a vague question because there are numerous methods of how the
>>> input, output and error pipes are handled. E.g. by 0, 1, 2 tasks.
>>>
>>> Anyway see:
>>>
>>> 1. GNAT's System.OS_Lib.Spawn, System.OS_Lib.Non_Blocking_Spawn.
>> 
>> Where are docs for this? I sought Google but not found.
> 
> Only package specification AFAIK. But it is quite easy to understand
> because Spawn and Non_Blocking_Spawn are very low-level.
> 
>>> 2. A more comfortable method would be to use GTK bindings (GLib
>>> actually):
>>>
>>>      http://www.dmitry-kazakov.de/ada/gtkada_contributions.htm#10
>> 
>> I don't want my software to depend on GTK as it is Web based.
> 
> GTK is not Web-based. It is written in C.

I meant that my software (not GTK) is Web based.

>> Is it possible to extract this code and use it separately?
> 
> Sources of GLib are freely available.
> 
> But it would be too complicated, especially under Windows were the GLib
> implementation uses a helper process.

It seems we need a helper process on Linux/Unix too:

From https://codelabs.ch/spawn-manager/index.html

The Ada spawn manager implements the concept described in the GNAT GPL 
package System.OS_Lib. It is used to solve the problem of spawning processes 
at arbitrary times from multitasking Ada programs:

If the parent is using tasking, and needs to spawn subprocesses at arbitrary 
times, one technique is for the parent to spawn (very early) a particular 
spawn-manager subprocess whose job is to spawn other processes. The spawn-
manager avoids tasking. The parent sends messages to the spawn-manager 
requesting it to spawn processes, using whatever inter-process communication 
mechanism you like, such as sockets.

SYSTEM.OS_LIB specification
— GNAT COMPILER COMPONENTS

So I am going to write patches to Ada Spawn Manager instead of using an 
existing solution, because my software is going to be multi-tasking.

In your opinion, is it really necessary? or can I use an existing solution?

-- 
Victor Porton - http://portonvictor.org

  reply	other threads:[~2017-11-13 20:16 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-11-13 16:38 Execute an OS command and capture output Victor Porton
2017-11-13 16:41 ` Victor Porton
2017-11-13 17:41 ` Dmitry A. Kazakov
2017-11-13 18:52   ` Victor Porton
2017-11-13 20:06     ` Dmitry A. Kazakov
2017-11-13 20:16       ` Victor Porton [this message]
2017-11-13 20:34         ` Dmitry A. Kazakov
2017-11-13 21:09           ` Victor Porton
2017-11-14  9:36             ` Dmitry A. Kazakov
2017-11-13 19:07   ` Victor Porton
2017-11-13 19:22     ` Victor Porton
2017-11-13 20:17     ` Dmitry A. Kazakov
2017-11-14 10:57     ` A. Cervetti
2017-11-13 21:32   ` briot.emmanuel
2017-11-16  1:00 ` Randy Brukardt
replies disabled

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