相关疑难解决方法(0)

python ctypes和sysctl

我有以下代码

import sys
from ctypes import *
from ctypes.util import find_library

libc = cdll.LoadLibrary(find_library("c"))
CTL_KERN = 1
KERN_SHMMAX = 34
sysctl_names = {
    'memory_shared_buffers' : (CTL_KERN, KERN_SHMMAX),
    }

def posix_sysctl_long(name):
    _mem = c_uint64(0)
    _arr = c_int * 2
    _name = _arr()
    _name[0] = c_int(sysctl_names[name][0])
    _name[1] = c_int(sysctl_names[name][1])
    result = libc.sysctl(_name, byref(_mem), c_size_t(sizeof(_mem)), None, c_size_t(0))
    if result != 0:
        raise Exception('sysctl returned with error %s' % result)
    return _mem.value

print posix_sysctl_long('memory_shared_buffers')
Run Code Online (Sandbox Code Playgroud)

产生以下结果:

Traceback (most recent call last):
  File "test.py", line 23, …
Run Code Online (Sandbox Code Playgroud)

c python linux ctypes

2
推荐指数
1
解决办法
2360
查看次数

标签 统计

c ×1

ctypes ×1

linux ×1

python ×1