2010-12-21 23 views
5

Herkes, MAC OS X için NETLINK Sockets API eşdeğerini biliyor mu? Linux uygulamasını MAC OS X'e aktarmaya çalışıyorum ve MACOS'ta benzer bir şey bulamadım.MAC OS X için herkes NETLINK Sockets API için eşdeğer olduğunu biliyor mu?

benim uygulamada ağ adaptörü asenkron erişim sağlamak gerekir. vb saniyede bir belirli bir miktar yapılandırma değişiklikleri hakkında

Yoklama ağ adaptörü benim için uygun bir çözüm değildir. NETLINK Soket API oyunu sadece ilginç bir şey olduğunda bildirim almanın yoludur.

NETLINK'in Linux çekirdeği ile kullanıcı alanı arasında iletişim kurması için Linux'a özel bir şey olduğunu biliyorum, ancak MACOS altında NETLINK gibi bir şey var. sysctl()

herkes herhangi bir bilgi var mı -

Ben kernel ile iletişim kurmak için sadece bir araçtır görüyor musunuz?

cevap

2

Sen OSX bu nedenle sağlar onların dokümanlar NKE bölümünde belgelenmiştir kernel control architecture kullanabilirsiniz.

+6

SO konuşmada rahatsız edici konuşmalara tolerans gösterilmez. Saldırgan kısmı kaldırmak için sorunuzu düzenledim. Israr ederseniz, silinecek. – jweyrich

-3

Bunu yapmanın geleneksel yolu seçme/anket/epoll/kqueue kullanılarak soket üzerinde olaylar için beklemektir. Hangi platformda en iyisi için bu cevaba bakın: select vs poll vs epoll.

Alternatif olarak, her bağlantı için yeni bir iş parçacığı spawn ve soket okur engelleme kullanın. Yine de, tarih bize bunun, seç/yokla/yokla engellenmeyen G/Ç'den daha az ölçeklenebilir olduğunu öğretti. Bu, çoğu insanın ağ sunucularını 1990'larda yazdığı yoldu. Kodlama stilinize bağlı olarak, G/Ç + ipliklerini engellemek daha kolay olabilir.

Adının tersine, epoll'un yoklama olmadığını unutmayın.

+0

Dinleme soketi ve soketten veri alma ve alma hakkında konuşmuyorum. NETLINK socket API kullanarak ağ bağdaştırıcısı ayarları ve yapılandırma verileri almaktan bahsediyorum. Netlink bir soket benzeri çekirdek ve kullanıcı alanı işlemler arasında IPC için mekanizma, aynı zamanda arasında kullanıcı alanı işlemleri, tek başına (örneğin, Unix priz gibi) ya da birden fazla kullanıcı alanı ve çekirdek alanı süreçlerin bir karışımıdır. Araştırmam, mac os x için NETLINK API'sinin olmadığını gösteriyor. Bunun için bir çeşit yedek arıyorum. P.S. epoll() sistem çağrısı MAC OS X'de mevcut değildir. 8-) – Vlad