LoginSignup
3
2

More than 5 years have passed since last update.

OSXのlibcはlibSystem.B.dylibなのかも

Posted at

背景

pythonのcyptesを試しているが、C側からPythonを呼び出せないのか
調べていたら、libcのqsortの例が

に出ていた。

そこで、OSXではlibcに該当するdylibはどれなんだろ?

Where is the standard C library on Mac OS X?

ありました。

libSystem.B.dylibが手元のYosemiteなMacには転がっていました。

やってみた

from ctypes import *
cdll.LoadLibrary("libSystem.B.dylib") 
libc=CDLL("libSystem.B.dylib")
IntArray5=c_int * 5
ia = IntArray5(5,1,7,33,99)
qsort=libc.qsort
qsort.restype=None
CMPFUNC=CFUNCTYPE(c_int,POINTER(c_int),POINTER(c_int))
def py_cmp_func(a,b):
  print("py_cmp_func",a[0],b[0])
  return 0

cmp_func=CMPFUNC(py_cmp_func)
qsort(ia,len(ia),sizeof(c_int),cmp_func)

C言語側からpy_cmp_funcが呼ばれた。

まとめ

ということで、OSXはGHOSTとは無縁なことが分かった(違

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2