2

我想在 OSX 上开发示例框架,并要求该框架在任何时候都只能由单个客户端使用,我不知道如何实现这一点?他们是否有任何 API 来检测框架正在使用的天气?我们可以为此使用一些与文件相关的 API 吗?..我看过一个 Windows 示例,他们在其中使用以下 API 检测 dylib 的使用情况?CreateFileMappingW MapViewOfFile OpenFileMappingW

有没有人遇到过这样的场景??

4

1 回答 1

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];
于 2013-05-21T11:01:16.113 回答