代码如下
#import <Foundation/Foundation.h>
@interface ShellCommand : NSObject
+ (NSString *)executeCommand:(NSString *)command;
@end
@implementation ShellCommand
+ (NSString *)executeCommand:(NSString *)command {
NSTask *task = [[NSTask alloc] init];
[task setLaunchPath:@"/bin/sh"];
[task setArguments:@[@"-c", command]];
NSPipe *pipe = [NSPipe pipe];
[task setStandardOutput:pipe];
[task setStandardError:pipe];
[task launch];
[task waitUntilExit];
NSData *data = [[pipe fileHandleForReading] readDataToEndOfFile];
NSString *output = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
return output ?: @"";
}
@end
这个示例带啊吗定义了一个名为 ShellCommand
的 Objective-C 类,其中实现了一个名为 executeCommand
的类方法,它接受一个字符串类型的参数 command
表示要执行的命令,返回一个字符串类型的标准输出结果。使用了 Foundation 框架中的 NSTask
类来执行命令和读取输出结果。我们通过创建一个 NSTask
对象来启动 /bin/sh
进程,并设置其 arguments
属性来传入需要执行的命令。在设置完毕 LaunchPath 和 Arguments 后,我们调用 task launch()
方法来启动进程,并使用 task waitUntilExit()
方法等待命令执行完成。在执行完成后,我们从 task 的标准输出中读取结果,并将其转换成字符串类型,最后返回。