GNU Info

Info Node: (python2.1-lib.info)dl

(python2.1-lib.info)dl


Next: dbm Prev: crypt Up: Unix Specific Services
Enter node , (file) or (file)node

Call C functions in shared objects
==================================

This manual section was written by Moshe Zadka
<moshez@zadka.site.co.il>.
Call C functions in shared objects.

The `dl' module defines an interface to the `dlopen()' function, which
is the most common interface on UNIX platforms for handling dynamically
linked libraries. It allows the program to call arbitrary functions in
such a library.

*Note:* This module will not work unless
     sizeof(int) == sizeof(long) == sizeof(char *)

If this is not the case, `SystemError' will be raised on import.

The `dl' module defines the following function:

`open(name[, mode` = RTLD_LAZY'])'
     Open a shared object file, and return a handle. Mode signifies
     late binding (`RTLD_LAZY') or immediate binding (`RTLD_NOW').
     Default is `RTLD_LAZY'. Note that some systems do not support
     `RTLD_NOW'.

     Return value is a `dlobject'.

The `dl' module defines the following constants:

`RTLD_LAZY'
     Useful as an argument to `open()'.

`RTLD_NOW'
     Useful as an argument to `open()'.  Note that on systems which do
     not support immediate binding, this constant will not appear in
     the module. For maximum portability, use `hasattr()' to determine
     if the system supports immediate binding.

The `dl' module defines the following exception:

`error'
     Exception raised when an error has occurred inside the dynamic
     loading and linking routines.

Example:

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

This example was tried on a Debian GNU/Linux system, and is a good
example of the fact that using this module is usually a bad alternative.

Dl Objects

automatically generated by info2www version 1.2.2.9