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.