8.5 dl -- Chiamare funzioni C in oggetti condivisi

Disponibilità: Unix.

Il modulo dl definisce un'interfaccia per la funzione dlopen() che è l'interfaccia più comune sulle piattaforme Unix per gestire dinamicamente delle librerie collegate. Permette al programma di richiamare funzioni arbitrarie in queste librerie.

Note: Questo modulo non funzionerà a meno che sizeof(int) == sizeof(long) == sizeof(char *) Se non è questo il caso, al momento dell'import verrà sollevata un'eccezione SystemError.

Il modulo dl definisce le seguenti funzioni:

open( name[, mode = RTLD_LAZY])
Apre un file oggetto condiviso e restituisce un gestore. mode indica che il binding (NdT: collegamento, legame) verrà posticipato (RTLD_LAZY) oppure verrà immediatamente eseguito (RTLD_NOW). Il valore predefinito è RTLD_LAZY. Notate che alcuni sistemi non supportano RTLD_NOW.

Il valore restituito è un dlobject.

Il modulo dl definisce le seguenti costanti:

RTLD_LAZY
Utile come argomento di open().

RTLD_NOW
Utile come argomento di open(). Notate che su sistemi che non suportano il binding immediato, questa costante non apparirà nel modulo. Per ottenere la massima portabilità, utilizzate hasattr() in modo da determinare se il sistema supporta o meno il binding immediato.

Il modulo dl definisce le seguenti eccezioni:

exception error
L'eccezione sollevata quando si verifica un errore all'interno delle procedure di caricamento e collegamento dinamico.

Esempio:

>>> import dl, time
>>> a=dl.open('/lib/libc.so.6')
>>> a.call('time'), time.time()
(929723914, 929723914.498)

Questo esempio è stato provato su un sistema Debian GNU/Linux, ed è una buona prova del fatto che utilizzare questo modulo è spesso una pessima idea.



Subsections
Vedete Circa questo documento... per informazioni su modifiche e suggerimenti.