iOS/iPhone/iPad/watchOS/tvOS/MacOSX/Android プログラミング, Objective-C, Cocoa, Swiftなど
Cocoaのプロセス間通信について調べてみた。今回はパイプだ。
/* ディレクトリ/配下の一覧を取得するプロセスを用意 */
NSTask *task = [[NSTask alloc] init];
[task setLaunchPath:@"/bin/ls"];
[task setArguments:[NSArray arrayWithObject:@"/"]];
/* 渡されたデータを読み取るパイプを用意 */
NSPipe *pipe = [[NSPipe alloc] init];
NSFileHandle *readEnd = [pipe fileHandleForReading];
/* 先ほどのプロセスの標準出力にパイプを繋げる */
[task setStandardOutput:pipe];
/* 実行 */
[task launch];
/* パイプに渡されたデータを印字 */
NSData *stdOutData = [readEnd availableData];
NSLog(@"%@", [[NSString alloc] initWithData:stdOutData encoding:NSUTF8StringEncoding]);
これに似たコマンドは、ちょっと違うが以下かな?
$ /bin/ls / | tee