检测Mac系统上的框架使用情况?

时间:2013-05-21 10:32:24

标签: macos cocoa frameworks dynamic-library

我想在OSX上开发示例框架,要求在任何时候框架都应该只由单个客户端使用,我不知道如何实现这一点?是他们的任何API来检测框架正在使用的天气?我们可以为此使用一些与文件相关的API吗?我已经看到了一个Windows示例,它们在哪里检测dylib的使用情况 遵循API的?? CreateFileMappingW MapViewOfFile OpenFileMappingW

有没有人遇到过这种情况?

1 个答案:

答案 0 :(得分:2)

您可以使用lsof命令。它将返回打开文件的列表。

  

在没有任何选项的情况下,lsof会列出属于的所有打开文件   所有活跃的过程。

NSTask* task = [[NSTask alloc] init];
NSPipe* pipe = [[NSPipe alloc] init];

NSArray* args = [NSArray arrayWithObjects: @"-c", @"lsof | grep -i some.framework | wc -l",nil];
[task setLaunchPath: @"/bin/sh"];
[task setArguments: args];
[task setStandardOutput: pipe];
[task setStandardError: pipe];
[task setStandardInput: [NSPipe pipe]]; 
[task launch];    
[task waitUntilExit];

NSFileHandle* file = [pipe fileHandleForReading];
NSString* result = [[NSString alloc] initWithData: [file readDataToEndOfFile] encoding: NSASCIIStringEncoding];
NSLog(@"%@",result);
[result release];
[task release];
[pipe release];