gpt4 book ai didi

macos - 如何以编程方式在 OS X 中搜索 unix 可执行文件?

转载 作者:行者123 更新时间:2023-12-03 16:55:00 25 4
gpt4 key购买 nike

因此,我需要在目录中搜索 Unix 可执行文件。我遍历目录和我正在搜索的文件的路径。我尝试过的一些方法。

1.借助文件扩展名

Unix可执行文件没有文件扩展名,但某些文档文件也没有扩展名。所以,这对我来说失败了。

<强>2。借助NSFileManager

NSDicitionary *fileAttributes = [[NSFileManager defaultManager] attributesOfItemAtPath:filePath error:nil];

它没有任何独特的属性来查找 Unix 可执行文件。

<强>3。在 MDItemRef 的帮助下

它具有名为 kMDItemContentType 的属性,但它仅为某些 unix 可执行文件 提供正确的结果。

MDItemRef        inspectedRef;
CFArrayRef inspectedRefAttributeNames;
CFDictionaryRef inspectedRefAttributeValues;
inspectedRef = MDItemCreate(kCFAllocatorDefault,(CFStringRef)filePath);
if(inspectedRef) {
inspectedRefAttributeNames = MDItemCopyAttributeNames(inspectedRef);
inspectedRefAttributeValues = MDItemCopyAttributes(inspectedRef,inspectedRefAttributeNames);
NSDictionary *attribDict = (__bridge NSDictionary*)inspectedRefAttributeValues;
if([[attribDict objectForKey:@"kMDItemContentType"] isEqualToString:@"public.unix-executable"])
NSLog(@"Unix Executable file");
}

<强>4。借助unix命令“file”

NSTask *unixTask = [[NSTask alloc] init];
[unixTask setStandardOutput:newPipe];
[unixTask setLaunchPath:@"/usr/bin/file"];
[unixTask setArguments:[NSArray arrayWithObject:filePath]];
[unixTask launch];
[unixTask waitUntilExit];
[unixTask terminationStatus];

while ((inData = [readHandle availableData]) && [inData length]) {
returnValue= [[NSString alloc] initWithData:inData encoding:[NSString defaultCStringEncoding]];
returnValue = [returnValue substringToIndex:[returnValue length]-1];
NSLog(@"%@",returnValue);
}

在这里,从returnValue我可以找到它是否是unix可执行文件。但这是一个非常缓慢的过程。所以,我的问题是如何以有效的方式搜索 unix 可执行文件?

最佳答案

尝试使用 NSURL 的 getResourceValue:forKey:error: 或 resourceValuesForKeys:error: 方法并请求 NSURLTypeIdentifierKey。

附录:

如果@Aravindhanarvi所说的是正确的,那么在10.6上存在错误并且上述解决方案不可靠。更糟糕的是,由于缺少 NSURLIsExecutableKey,@petur 解决方案也是不可能的。

另一种方法是退回到 NSFileManager 并使用 isExecutableFileAtPath: 和 attributeOfItemAtPath:error: (特别是 NSFilePosixPermissions 和 NSFileType 属性)等方法来实现 @petur 建议的相同逻辑。

关于macos - 如何以编程方式在 OS X 中搜索 unix 可执行文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11881009/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com