[IronPython] IronPython and file descriptors

Michael Foord fuzzyman at gmail.com
Mon Dec 15 12:52:43 PST 2008


2008/12/15 Dino Viehland <dinov at microsoft.com>

> Presumably CPython is linking against msvcrt and is using the C abstraction
> rather than calling the Win32 APIs which return handles directly.
>
> As Curt said the biggest problem for us is that .NET does not expose C file
> descriptors.  Therefore we could fix this by P/Invoking out to msvcrt.  For
> users on other platforms we'd need to either add support for their platform
> or hope that their handles == C runtime file descriptors.  For something
> like fileno maybe this is ok because it's an interop point only - or are
> there any non-interop uses of fileno in the world?
>
> What do people think of this?  This would be the 1st place where we would
> add a P/Invoke so I'd want to tread lightly and make sure this is really the
> right thing to do.



Well, some way of doing this is needed if certain Python C extensions are to
work with Ironclad. Perhaps a global or per engine setting that allows file
handles to be associated with a C descriptor. Users of Ironclad could switch
it on if they wished and take the consequences.

Michael Foord


>
>
> -----Original Message-----
> From: users-bounces at lists.ironpython.com [mailto:
> users-bounces at lists.ironpython.com] On Behalf Of Slide
> Sent: Monday, December 15, 2008 10:21 AM
> To: Discussion of IronPython
> Subject: Re: [IronPython] IronPython and file descriptors
>
> On Mon, Dec 15, 2008 at 11:18 AM, Tom Wright
> <tom.wright at resolversystems.com> wrote:
> > Agreed. It is certainly possible with some work to get a file descriptor
> and
> > pass it to C code.
> >
> > This is not the problem, however. Ironclad's aim (eventually) is to allow
> > *arbitrary* C extensions  to work with Ironpython without changing the
> > extensions. Ctypes aim is to allow arbitrary C code to be run by python
> > (possibly in other python libraries which you really don't want to
> modify).
> >
> > In CPython .fileno() is a file descriptor and some modules use this fact
> > (specifically PIL) by passing file descriptors as integers into C code. I
> do
> > not know how one can make this code work in IronPython unless .fileno()
> > returns a file descriptor.
> >
> > The game here is not making a particular C library work with IronPython
> by
> > modifying this library but making as many libraries as possible work
> without
> > modification. Of course whether this is worthwhile depends on how many
> > libraries rely on this fact.
> >
> > Sorry - I hope this is a little clearer.
> >
> > Tom
>
>
> How does CPython get the file descriptor for fileno()? Does it just
> return the HANDLE on Windows?
>
> slide
> _______________________________________________
> Users mailing list
> Users at lists.ironpython.com
> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
> _______________________________________________
> Users mailing list
> Users at lists.ironpython.com
> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>



-- 
http://www.ironpythoninaction.com/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ironpython.com/pipermail/users-ironpython.com/attachments/20081215/81cda530/attachment-0001.htm>


More information about the Users mailing list