Ctypes
Un article de Haypo.
(Différences entre les versions)
Version du 19 février 2008 à 22:28 (modifier) Haypo (Discuter | Contributions) (→Divers) ← Différence précédente |
Version du 19 février 2008 à 22:31 (modifier) (défaire) Haypo (Discuter | Contributions) (→Hello World!) Différence suivante → |
||
Ligne 11 : | Ligne 11 : | ||
Hello World! | Hello World! | ||
13 | 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",) | ||
== Modules == | == Modules == |
Version du 19 février 2008 à 22:31
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",)
Modules
- ctypes_errno.py : lire la variable errno, code d'erreur C
- ctypes_libc.py : accéder à la libc de manière portable
- ctypes_stdint.py : types uint8_t, int32_t, ..., uint64_t
- ctypes_tools.py : outils divers
Outils connexes :
- cpu_info.py : informations sur le processeur
- os_tools.py : informations sur le système d'exploitation