2011-12-28 14 views
2

私はこの問題に対する洗練された解決策を見つけられませんでした:obj-cでシェルコマンドを実行して出力を得る方法。私はこれに関する多くの質問を読んだが、彼らはすべて私の質問に答えることができない。ココアでシェルコマンドを実行して出力を取得する方法は?

一部の人は、終了値(Get result from shell script objective-c)以外はコマンド(Cocoa/ Objective-C Shell Command Line Execution)を実行し、他の人は出力をファイル(Execute a terminal command from a Cocoa app)に書き込みます。

私は実際にそれはない非常にきれいな解決策として、ファイルの読み込み/書き込みを避けるためにしたいと思います。

OBJ-Cに直接出力を読み込む方法はありませんか?もしそうなら、どのように?

+0

読みやすくするため、質問を再フォーマットしてください。 – tobiasbayer

+0

申し訳ありませんが、私は、バックエンドが自動的にURLを解析すると仮定しました。 – Trcx

+0

いくつかの段落も大きな改善となるでしょう。 – tobiasbayer

答えて

2

最初のリンク(Get result from shell script objective-c)から「doshellscript」のコードは、実際のコマンドの出力とのNSStringを返すありません。それはあなたのために働いていない場合、おそらくコマンドstderrではなくstderr出力されますか?あなたはまだこれを試しましたか? Cocoaでコマンドを実行するための標準的なメカニズムはNSTaskなので、間違いなく少なくともそこから開始してください。

+0

これを指摘していただきありがとうございます、もともと、私は一時ファイルからの読み込みとスクリプトの終了コードを取得するためにこれを読んでいません。今朝明快な頭をもって機能を分けて働かせることができました。 – Trcx

2

はクラスPRHTaskを見てください。 NSTaskの代わりであり、完了ブロックが付いています。ヘッダからhttps://bitbucket.org/boredzo/prhtask

エキス:

  • まず、ではなく標準出力とエラーのために独自のパイプを設定する必要が、あなたはあなたのための出力を蓄積するタスクを伝え、そしてときにそれを取得することができますタスクは完了します。
  • 第二には、プロセスの終了時、むしろNSNotificationを掲示するよりも、PRHTaskはあなたが提供する2つのブロックのいずれかを呼び出します。必要に応じて、両方を同じブロックに設定できます。
0

あなたのタスクは、管理者権限が必要な場合は、STPrivilegedTaskで見たいと思うかもしれません。

関連する問題