Ctypes

Un article de Haypo.

(Différences entre les versions)
Version du 19 février 2008 à 22:31 (modifier)
Haypo (Discuter | Contributions)
(Hello World!)
← Différence précédente
Version du 19 février 2008 à 22:33 (modifier) (défaire)
Haypo (Discuter | Contributions)
(Pour définir une structure)
Différence suivante →
Ligne 34 : Ligne 34 :
) )
_anonymous_ = ("_sifields",) _anonymous_ = ("_sifields",)
 +
 +== Tableau d'octet ==
 +
 + from ctypes import create_string_buffer
 + python_string = "string with \0 byte"
 + c_string = create_string_buffer(python_string)
 + assert c_string.value == 'string with'
 + assert c_string.raw == python_string
== Modules == == Modules ==

Version du 19 février 2008 à 22:33

Retour à la page précédente Retour aux langages de programmation

ctypes est une bibliothèque Python permettant d'accéder aux fonctions et symboles d'une bibliothèque externe (en particulier, codée en C).

Sommaire

Hello World!

$ python
>>> libc=cdll.LoadLibrary('libc.so.6')
>>> libc.printf("Hello World!\n")
Hello World!
13

Pour définir une structure

from ctypes import Structure, Union

class user_regs_struct(Structure):
   _fields_ = (
      ("ebx", c_ulong),
      ("ecx", c_ulong),
      ("edx", c_ulong),
      ("esi", c_ulong),
      ...
   )

_sifields_t = (...)
class siginfo(Structure):
   _fields_ = (
        ("si_signo", c_int),
        ("si_errno", c_int),
        ("si_code", c_int),
        ("_sifields", _sifields_t)
   )
   _anonymous_ = ("_sifields",)

Tableau d'octet

from ctypes import create_string_buffer
python_string = "string with \0 byte"
c_string = create_string_buffer(python_string)
assert c_string.value == 'string with'
assert c_string.raw == python_string

Modules

Outils connexes :

Articles connexes