Нет способа, которым пользовательский процесс сможет сделать то, что вы описываете. Я полагаю, даже не процессы, выполняющиеся от имени пользователя root. Помните: у нас не работает Windows. И даже если это так, вы, вероятно, не должны ожидать, что Какао поддержит его. Какао предназначено для простого в использовании графического интерфейса Mac OS X. Не для низкоуровневой разработки системы.
Единственный способ выполнить то, что вы описываете, - это расширить ядро, что делает Little Snitch. Если бы был какой-то другой умный способ, уверяю вас, Маленький Снитч сделал бы это по-другому. Расширения ядра не для слабонервных. При падении расширения ядра вся система падает . Так что тебе лучше знать, что ты делаешь.
Вы можете, однако, получать информацию о процессах и их сокетах из пространства пользователя, но не используя Какао. И только собственные процессы пользователя, если ваше приложение не работает от имени пользователя root. Вам нужно использовать libproc, который не задокументирован Apple. Вы должны выяснить, как это делает lsof . И вы до сих пор не можете вмешиваться в то, что вы получаете.
Полагаю, тебе лучше использовать Little Snitch. Накладные расходы, добавленные Little Snitch, незначительно малы, и я обещаю, вы не почувствуете разницу. Он просто удерживает сокетное соединение до тех пор, пока не будет принято решение - вами или программным обеспечением.
Если, тем не менее, вы все еще испытываете желание написать свои собственные расширения ядра, Руководство по программированию расширений сетевого ядра от Apple - это то, что вам нужно. Раздел «Socket Filters» описывает интерфейсы, которые использует Little Snitch.