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
next prev parent 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