とココア(obj.c)からシェルスクリプトを実行します。私はボタンをクリックするとそれを呼び出します。 'waitUntilExit'で行を削除すると、期待通りに動作しますが、一度だけ動作します。それがそこにあるとき、それは動作しません。 私は 'ls' 'ping -c1 google.com'のような基本的なコマンドも試してみましたが、どうにかして動作させることはできません。あなたが応答を受け取ってココアでシェルスクリプトを実行するためのいくつかの異なるアプローチを持っているなら、今私に教えてください。ありがとうございました:)は、私のようなものを持っている応答
答えて
ねえ、Kukosk。 NSTaskの実行時にCocoaDevに約NSLog()
の問題があるというコメントがあります。修正は、タスクを起動する前にstdin
ためのパイプを設定することです:あなたはNSLog()
に頼っている場合
[task setStandardInput:[NSPipe pipe]];
のみ、タスクが実行されたかどうかを確認するために、これはあなたの問題を解決することがあります。また、NSLog()
ではなく、output
をGUIに表示することもできます。
ありがとう@bavariousあなたは私の一日を救った!待って、あなたは別のNSTaskスレッドで同じ人ですか? :) 神のお恵みがありますように... – swdev
ああ、あなたが見逃していたと思われるドキュメントには、次のような気になるものがあります。「NSTaskオブジェクトは一度しか実行できません。タスクはエラーを発生させます。
だから、待ち合わせの前に[unixTask release]を追加してください。もう一度それを実行したいときは、タスクを作り直してください。
NSTimerはこれのようです。
問題は、タスクの出力バッファを空にしていないことです。タスクが非常に少量のデータを放出しない限り、単にタスクを起動することはできません。waitUntilDone
waitUntilDone
は、決して終了しないタスクではまったく動作しません。
任意の量の出力を発行するタスクでは、生成された出力が読み取られるように設定する必要があります。通常、readInBackgroundAndNotify
またはその中の変種を使用します。
いずれの場合でも、NSTask
のクラス説明の先頭には、概念ガイドへのリンクとこれをカバーする一連の例があります。
Cocoaでシェルスクリプトを実行するさまざまなアプローチには、AMShellWrapper、PseudoTTY.appまたはOpenFileKillerがあります。
- 1. ... ...私はXMLのようなものを持っている
- 2. SendInput、私はそのようなものを持っている
- 3. ウェブ応答私はこのようなものを作成している
- 4. は、私はそうのようなリクエストを投稿する応答ジャージーRESTサーバーを持っている
- 5. のActiveRecord ::応答のようなRecordNotFoundが、私はこのようなコード例を持って
- 6. dbmigrator私のようなものを持っている移行
- 7. はすでに私は私の応答は以下のようである問題を持っている
- 8. のように私は3つのラジオボタンを持ってdinamically応答
- 9. HttpURLConnectionの応答は次のように私はURL を持っている私のプロジェクトで
- 10. JSPは応答の後、私は動的なWebアプリケーションを持っている
- 11. 私はこのようなAPIからの応答持つ
- 12. 私は2つのモック応答など持ってSOAPUI
- 13. は、私は以下のような要素を持っているSOAPUI XML応答でSOAPUI
- 14. はなぜ私のようなものを持っている一時テーブル
- 15. は、私はこのようなものPOJOクラスを持っているMyBatisの
- 16. は、どのようにリソースを持っているJAX-RSで応答ExceptionMapper
- 17. API残りの応答コード私が持っている
- 18. URLは、私はこのようなものでURLを持っている.htacces
- 19. ので、私はこのようなものを持っている
- 20. アンドロイドスタジオフラグメントは、私のようなものを持っているのEditText
- 21. ランダムに私は次のようなものを持っているリスト
- 22. 応答 - 私はサイズと親のdivを持って
- 23. 変換WabApi応答配列は、私が持っているような配列を返しますWEBAPI配列
- 24. 次の私は、ブートストラップで応答性のイメージを持っている
- 25. 私はこの単純なコード持っジャージー2応答
- 26. 私はこのようなデータを持ってDFを持っているR
- 27. 私はそうのようなテーブルを持っているSQL
- 28. 私はそうのようなマップを持っているマップ
- 29. python |私はこのような機能を持っていてもブレーク
- 30. が、私はこの問題を持っているHTTP GET応答
こんにちは、面白い - このコードは私のためにうまくいきます。しかし何らかの理由でNSLogが壊れてしまいます.NSLogは私のために何も表示しませんが、コンソールから直接実行すると期待どおりに動作します。私は決してあなたのコードを変更していません.... – Moszi
[Cocoaアプリから端末コマンドを実行する]の可能な複製(http://stackoverflow.com/questions/412562/execute-a-terminal-command-from -a-cocoa-app) – Mark