comp.lang.ada
 help / color / mirror / Atom feed
From: Niklas Holsti <niklas.holsti@tidorum.invalid>
Subject: Re: Determining size of Standard_Input (when file contents are piped into a program).
Date: Mon, 7 Jan 2019 11:32:27 +0200
Date: 2019-01-07T11:32:27+02:00	[thread overview]
Message-ID: <g9gkl9F59elU1@mid.individual.net> (raw)
In-Reply-To: <lna7kdi2v8.fsf@kst-u.example.com>

On 19-01-07 05:05 , Keith Thompson wrote:
> Niklas Holsti <niklas.holsti@tidorum.invalid> writes:
>> On 19-01-06 13:02 , Bojan Bozovic wrote:
>>> Is there platform independent way to do this? I was unable to find
>>> anything in RM under Ada.text_IO.
>>
>> I would say that this is impossible in principle. On some systems, other
>> concurrent programs can write more data into the input file as your
>> program is reading the file, so the input file can grow during the
>> execution of the program, and may not even have any fixed upper bound on
>> its size (apart from the total space available in the system).
>>
>> IMO the only robust way is to read all of standard input and store it
>> within the program, or in a temporary file, and then process the stored
>> data.
>
> I mostly agree, but it could be possible in some limited
> circumstances.
>
> For example, if a program on Linux has its standard input redirected
> from a file, the system still keeps track of the identity of the
> file (/proc/$PID/fd/0 is a symbolic link to the file).

Ah, good to know.

> You can then determine the size of that file.

Yep, but the file-size may grow with time and -- on some systems -- the 
added data may become visible (readable) to a program reading the file. 
But not on all systems -- I ran across this quirk when a certain 
multi-process application which worked under Linux did not work under 
Apple OS/X, because it used such a growing file to communicate data from 
one process (writer) to another (reader). On OS/X, the reader never saw 
any data that the writer wrote _after_ the reader opened the file. Of 
course this may also depend on the Ada run-time in some way, although in 
both cases GNAT was used.

-- 
Niklas Holsti
Tidorum Ltd
niklas holsti tidorum fi
       .      @       .

      reply	other threads:[~2019-01-07  9:32 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-01-06 11:02 Determining size of Standard_Input (when file contents are piped into a program) Bojan Bozovic
2019-01-06 12:51 ` Niklas Holsti
2019-01-06 14:53   ` Bojan Bozovic
2019-01-07  3:05   ` Keith Thompson
2019-01-07  9:32     ` Niklas Holsti [this message]
replies disabled

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