gpt4 book ai didi

cocoa - NSTask:进程的启动路径是否存在

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

此代码用于获取进程的标准输出

    NSTask       * task;
NSPipe * pipe;
NSFileHandle * fileHandle;

task = [ [ NSTask alloc ] init ];
pipe = [ NSPipe pipe ];
fileHandle = [ pipe fileHandleForReading ];

[ task setLaunchPath: @"/usr/bin/lspci" ];
[ task setArguments:[NSArray arrayWithObject:@"-nn"]];
[ task setStandardOutput: pipe ];
[ task setStandardError: pipe ];
[ task launch ];
[ task waitUntilExit];
[ task release];

NSData *outputData = [[pipe fileHandleForReading] readDataToEndOfFile];

NSString *outputString = [[[NSString alloc] initWithData:outputData encoding:NSUTF8StringEncoding] autorelease];

由于某些系统上不存在/usr/bin/lspci,因此出现此 fatal error

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'launch path not accessible'

如何事先检查lspci是否存在,如果不存在则向用户显示错误消息?

最佳答案

检查文件是否存在且可执行:

BOOL exists = [[NSFileManager defaultManager] isExecutableFileAtPath:[task launchPath]];

丢失文件并不是您遇到异常的唯一原因。您应该始终使用 @try-@catch block 。

关于cocoa - NSTask:进程的启动路径是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7050018/

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