2014-03-24 29 views
2

我正在尋找在用戶空間中立即得到通知的方式,當時已經創建了一個新的套接字。我們現有的實現在/ proc/net/tcp和/ proc/net/udp上進行輪詢讀取,但對於壽命很短的套接字(例如發送數據報和關閉),這不起作用。Linux:如何獲得新創建的套接字的通知?

+0

你真的想做什麼。我懷疑如果你真的得到了*每個*新套接字的通知,你都會被埋沒在噪音中。 Linux使用套接字*很多* ... – twalberg

+0

你的意思是爲特定的系列和類型創建套接字對象('struct socket')嗎?或者你的意思是建立連接? – Kaz

回答

1

你可以嘗試:

  • 審計的socketsocketcall系統調用。如果不使用audit守護程序,則需要編寫一些netlink代碼。如果你想與試圖訪問審計系統的其他用戶空間共存,你需要爲其多播netlink套接字使用3.15內核。
  • 編寫一個自定義的linux安全模塊,使用您最喜歡的事件機制來通知用戶空間一個新的套接字。
  • 使用straceltrace以遞歸方式進行系統調用或庫呼叫跟蹤,如果您不介意hackiness,raciness和overhead。
  • 用墊片層替換套接字系統調用。需要編寫你自己的內核模塊。
  • 使用跟蹤器function進行跟蹤,並限制跟蹤到套接字系統調用或其委託的類型特定的初始化函數的函數。
  • Kprobing前面提到的感興趣的內核函數,並使用您最喜歡的通知用戶空間的機制。
相關問題