Если я правильно прочитал man-страницу, environ
- это char**
, а не функция.Если вы хотите получить окружение, в соответствии с этой записью , вы можете сделать:
from ctypes import *
libc = CDLL('libc.so.6')
environ = c_char_p.in_dll(libc, 'environ')
Но для меня он возвращает 'c_void_p (None)', не зная, почему это происходит(я знаю, что я объявил только как char *
, но так как он возвращает None, их ничто не может разыменовать).
В любом случае, у вас все еще есть способ "python":
import os
print os.environ
Или, если вы ищете определенную строку в среде, используя ctypes, для какой-то функции вам нужно переопределить рестайп по умолчанию:
from ctypes import *
libc = CDLL('libc.so.6')
getenv = libc.getenv
getenv.restype = c_char_p
print getenv('HOME')