Re: Remove file descriptors completely from srfi-170? Lassi Kortela (10 Sep 2020 15:55 UTC)
Re: Remove file descriptors completely from srfi-170? Duy Nguyen (10 Sep 2020 15:59 UTC)
open-file and fd->*port Lassi Kortela (10 Sep 2020 16:05 UTC)
Re: open-file and fd->*port Duy Nguyen (10 Sep 2020 16:16 UTC)
Re: open-file and fd->*port Shiro Kawai (10 Sep 2020 17:34 UTC)
Re: open-file and fd->*port Duy Nguyen (10 Sep 2020 17:41 UTC)
Re: open-file and fd->*port John Cowan (10 Sep 2020 18:19 UTC)

Re: open-file and fd->*port Duy Nguyen 10 Sep 2020 17:40 UTC

On Fri, Sep 11, 2020 at 12:34 AM Shiro Kawai <xxxxxx@gmail.com> wrote:
>
> On Thu, Sep 10, 2020 at 6:16 AM Duy Nguyen <xxxxxx@gmail.com> wrote:
>>
>> On Thu, Sep 10, 2020 at 11:05 PM Lassi Kortela <xxxxxx@lassi.io> wrote:
>>
>> > A child process using a known fd number (e.g. 3) from its parent (or
>> > from its predecessor before execve()) is a good convention for IPC.
>> > Hence it ought to be a useful feature to open a known fd as a Scheme port.
>>
>> Yes. We can deal with that when we flesh out process management SRFI.
>> Until we know exactly the interface we have it may be premature to
>> introduce fd-based API.
>>
>
> It doesn't need to be related to process srfi.   The extra fd may be open by the parent process (which doesn't need to be a Scheme program), and the Scheme program may want to read/write the given integer fd.
>
> One real-world example is stunnel <https://www.stunnel.org/static/stunnel.html> .  It takes the -fd option, which takes an integer fd that the parent process is supposed to open before spawning the stunnel command.  Now, if we want to write a similar command in Scheme, it gets an integer fd from command line arguments and needs to read from it.

Yeah I'm thinking about that. And I don't have an answer yet (and
don't want to invoke that 80/20 rule). But I think we could still
cover case by case.

Another case is transferring fd via unix sockets. But I think in that
case we could also return a socket/port instead of fd. In whatever
srfi that supports unix sockets.
--
Duy