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 16:15 UTC
On Thu, Sep 10, 2020 at 11:05 PM Lassi Kortela <xxxxxx@lassi.io> wrote: > > >>> Why not combine open-file and > >>> fd->*port in one? All other procedures either take pathname or a port. > >> > >> POSIX open() takes a whole bunch of flags which are relevant when > >> opening a pathname and don't have much to do with converting an > >> already-existing fd to a Scheme port. > >> <https://pubs.opengroup.org/onlinepubs/9699919799/functions/open.html> > > > > So the new open-file also takes a bunch of flags and returns a port. > > Since there's no way for you to get hold of an fd in the first place > > (unless you count on special numbers 0, 1 and 2), converting an > > already-existing fd to a Scheme port is a moot point. > > 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. > If some C API outside SRFI 170 returns an fd, being able to turn that > into a Scheme port is also good. I'm not concerned about FFI. If they can provide FFI, they can provide wrappers to make a port out of it (and deal with fd management themselves). > If open-file takes an integer (giving the fd) how would it interpret its > flags argument? open-file (as the combination of an existing open-file and fd->*port) just does not take a number, only paths. -- Duy