トップ «前の日記(2014-04-29) 最新 次の日記(2014-05-05)» 編集

Cocoa練習帳

iOS/iPhone/iPad/watchOS/tvOS/MacOSX/Android プログラミング, Objective-C, Cocoa, Swiftなど

2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|05|

2014-05-04 [OSX]プロセス間通信(NSPipe)

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

_ ソースコード

GitHubからどうぞ。
https://github.com/murakami/workbook/tree/master/mac/pipe - GitHub

_ 関連情報

Cocoa in a Nutshell

_ 【Cocoa練習帳】

http://www.bitz.co.jp/weblog/
http://ameblo.jp/bitz/(ミラー・サイト)

トップ «前の日記(2014-04-29) 最新 次の日記(2014-05-05)» 編集