Skye schrieb: > Great, thanks for the help (I'm fairly new to Python, didn't know > about ctypes) > > from ctypes import * > libc = CDLL("libc.so.7") > size = c_uint(0) > libc.sysctlbyname("net.inet.ip.stats", None, byref(size), None, 0) > buf = c_char_p(" " * size.value) > libc.sysctlbyname("net.inet.ip.stats", buf, byref(size), None, 0)
IIUC, sysctlbyname writes the information you requested into the buffer supplied as second argument. If this is true, then the above code is incorrect. c_char_p(src) creates an object that shares the buffer with the Python string 'src'; but Python strings are immutable and you must not write ctypes code that modifies them. Instead, you should code: from ctypes import * libc = CDLL("libc.so.7") size = c_uint(0) libc.sysctlbyname("net.inet.ip.stats", None, byref(size), None, 0) buf = create_string_buffer(size.value) libc.sysctlbyname("net.inet.ip.stats", buf, byref(size), None, 0) Thomas -- http://mail.python.org/mailman/listinfo/python-list