ctypes shared object FILE*

member thudfoo thudfoo at opensuse.us
Thu Nov 13 18:02:58 EST 2008


On 11/8/08, Dog Walker <thudfoo at gmail.com> wrote:
> I need to call a function in a shared object with this signature:
>  init_dialog(FILE *input, FILE *output)
>  The FILE*'s are to stdin and stdout.
>
>  The call from python is libdialog.init_dialog( x, y)
>  I need to define x and y so that they will have the structure of
>  sys.stdin and sys.stdout; the called function (init_dialog) is using a
>  (std?) function fileno to extract the fileno from the FILE* describing
>  stdin and stdout.
>  How can I do this?
>

I should have said "stderr" rather than "stdout".

And the answer is:

from ctypes import *
from ctypes.util import find_library
libc = CDLL(find_library("c"))
libdialog = CDLL(find_library("dialog"))
class FILE(Structure): pass

libdialog.init_dialog(POINTER(FILE).in_dll(libc, "stdin"),
POINTER(FILE).in_dll(libc, "stderr"))

>  --
>  I have seen the future and I'm not in it!
>
> --
>  http://mail.python.org/mailman/listinfo/python-list
>



More information about the Python-list mailing list