/**
* @brief UNIXコマンドを実行する.
* @param [in] command_path 実行するコマンドのパス.
* @param [in] args 引数リスト.
*/
- (NSData*)doCommand:(NSString*)command_path args:(NSArray*)args {
NSTask *task = [[NSTask alloc] init];
// 標準出力用
NSPipe *out_pipe = [NSPipe pipe];
[task setStandardOutput:out_pipe];
// 標準error
NSPipe *err_pipe = [NSPipe pipe];
[task setStandardError:err_pipe];
// Task に command のパスと引数を設定
[task setLaunchPath:command_path];
[task setArguments:args];
// 設定したコマンドを設定した引数で実行
[task launch];
// 標準出力に設定した Pipe からデータを取得する.
NSData *data = [[out_pipe fileHandleForReading] readDataToEndOfFile];
return data;
}
ここでは例として、PATH を取得する以下のコマンドを実行してみることにします
uroshika$ echo $PATH
これをObjective-Cから実行するには、
- (void)getPath {
NSString* command_path = @"/bin/echo";
NSArray* args = @[@"$PATH"];
NSData *data = [self doCommand:command_path args:args];
NSString* result = @"";
if (data != nil && [data length]) {
result = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
}
}

0 件のコメント:
コメントを投稿