2012-07-24 2 views
0

모노 기반 프로젝트에서 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
이반

+0

솔루션이지만 VNode보다는 PID를 기반으로합니다. 트릭을 수행하는 proc_pidpath 함수 (http://astojanov.wordpress.com/2011/11/16/mac-os-x-resolve-absolute-path-using-process-pid)가 있으며 모든 프로세스에서 작동합니다. 그것이 시스템이든 사용자이든간에. 프로세스 관리자 API (http://cocoadev.com/wiki/ProcessManager)는 사용자 프로세스에만 적용됩니다. – ivan

답변

0

vn_getpath 기능은 커널의 일부에만 커널과 커널 확장에 사용할 수 있습니다, 라이브러리에 정의되지 않은 : 나는 발견했다

$ otool -tv /mach_kernel | grep vn_getpath 
_vn_getpath: 
_vn_getpath_fsenter: 
관련 문제