我需要在基於Mono的項目中使用vn_getpath函數(在vnode.h中定義爲內核框架的一部分),所以我將使用PInvoke導入它。但我不知道應該在DllImport屬性中引用哪個庫。我已經嘗試過'LibC'和'/System/Library/Frameworks/Kernel.framework/Kernel',但目前還沒有運氣。查找VNode的文件系統路徑
有誰知道函數位於哪個函數庫?
我的終極目標是:
我收集了在系統中運行的所有進程的詳細信息。我使用sysctl來枚舉進程。從sysctl調用我可以獲得進程的可執行文件的進程ID和VNode。現在我需要獲取文件系統路徑來處理可執行文件。
我在看vn_getpath和fcntl(使用F_GETPATH命令)。
在vn_getpath上,我無法弄清楚哪個庫可以導入它,使用DllImport屬性。
至於fcntl,我已經在LibC中找到它,但函數需要文件描述符(而不是vnode)。
一般來說,我需要關於如何從vnode獲取文件系統路徑,以及任何數量的中間步驟。
TIA
伊萬
我已經找到了解決方案,但它基於PID而不是VNode。有proc_pidpath函數(http://astojanov.wordpress.com/2011/11/16/mac-os-x-resolve-absolute-path-using-process-pid)可以實現這個技巧,它適用於所有進程無論是系統還是用戶。應該注意,Process Manager API(http://cocoadev.com/wiki/ProcessManager)僅適用於用戶進程。 – ivan 2012-08-03 07:32:15