問題タブ [nstask]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
objective-c - 複数のNSTaskを連続して実行する
NSTaskを使用して複数のコマンドを順番に実行する必要があり、次のコマンドに進むことができるように、タスクが終了したかどうかを判断するための良い方法は何でしょうか。「sox」(アプリケーションバンドルに含まれています)を使用して、入力オーディオファイルを使用して一時オーディオファイルを作成し、それらの一時オーディオファイルを1つのファイルに結合する必要があります。プロセスのフローの例(実際のコマンドではありません):
1)songA> tempA
2)songB> tempB
3)tempAtempB>songCを組み合わせる
次のコードを使用して、最初のコマンドを完了します。
このプロセスが終了した後に(前のプロセスの出力を使用して)さらに2つのNSTaskプロセスを実行する必要があるとすると、次のプロセスに進むことができるように、1つのプロセスが終了したことを検出する最良の方法は何でしょうか。
ありがとう。
objective-c - NSTask + タスクで NSLog を呼び出すと、コンソールにメッセージが二重に出力されます
NSTask を呼び出すアプリがあり (NSTask とアプリのコードを作成しました)、NSTask は、行をコンソールに書き出す必要がある場所で NSLog を呼び出します。
問題は、NSTask からのコンソール メッセージが表示されることです。その後、呼び出し元のプロセスから出力される同じメッセージが二重ヘッダーで表示されます...
目的の出力を読み取るだけで非常に混乱します(BLAH BLAH BLAH)。この問題を解決する魔法の設定はありますか?
ありがとう、
――トム
objective-c - NSTask セッションを実行し続ける - Cocoa
次のように、Cocoa アプリで簡単な grep コマンドを実行します。
Controlただし、出力を出さず、 +などで終了しない限りすぐに実行されない、ターミナルから入力されたコマンドCをこの手法で実行する方法を知りたいと思っています。java -jar server.jar
セッションを終了するまで実行し続ける場所で実行するようなもの。コマンドが起動された後、セッションが自動的に終了しないようなことをするにはどうすればよいですか?
を解放する部分をコメントアウトする必要がありNSTask
ますか?どんな提案でもいいです!
cocoa - 終了した子プロセスによって捕捉されなかったシグナルを判別します
私はMacOSXアプリ(Cocoa)を持っています。これは、C++コンソールヘルパーアプリを生成していくつかの作業を行います。GUIはNSTaskを介してヘルパーを生成し、名前付きパイプを介して相互に通信します。これはすべて良いです。
ヘルパーアプリが停止すると、GUIはNSTaskDidTerminateNotificationを取得し、terminationReasonを呼び出して、ヘルパーが正常に終了したか、強制終了されたかを判断できます(NSTaskTerminationReasonUncaughtSignal)。しかし、どの信号が捕捉されなかったかを正確に判断する方法はありますか?たとえば、SIGBUSなのかSIGABRTなのか知りたいのですが。
これは可能ですか?NSTaskにはこの機能がないようですが、UNIXのようなブードゥーがありますか?
更新: Terminal.appは確かに知っています。例えば:
objective-c - NSTaskとGit-権限の問題
私のCocoaアプリケーションでは、NSTask
いくつかの基本的なGitコマンドを実行するために使用しようとしています。リモートにアクセスするためにアクセス許可(SSHキー)を必要とするコマンド(たとえばgit push
、git pull
)を実行すると、次のエラーで失敗します。
許可が拒否されました(公開鍵)。リモートエンドが予期せずハングアップしました
ターミナルから同じコマンドを実行すると問題なく動作するため、これはNSTask
、sshキーにアクセスするプロセスのどこかで使用される環境変数を設定しない場合の問題である可能性があると考えています。HOME
とUSER
環境変数を次のように手動で設定してみました。
しかし、これは効果がありません。NSTask
これが正しく機能するために設定する必要のある特定の環境変数はありますか?
編集:ダスティンのヒントのおかげで、私はこれを理解するのに少し進んだ。コマンドを使用env
して現在のセッションの環境変数を一覧表示しましたが、次のことがわかりました。
テストするために、そのパスをコピーしての環境変数として設定しNSTask
、コードを再度実行しましたが、今回は機能しました。SSH_AUTH_SOCK
とは言うものの、セッションごとに変更されると確信しているので、ハードコーディングするだけでは不十分です。この変数を動的に生成/取得するにはどうすればよいですか?
objective-c - NSTask "/bin/sh -c" コマンドを適切なパイプライン コードに変換する
次のコードを、代わりに「cat」と「grep」の 2 つの NSTask を持つコードに変換して、2 つをパイプで接続する方法を示すのを手伝ってくれませんか? 引用などについて心配する必要がなくなるので、私は後者のアプローチを好むと思います。
更新: ここでの cat と grep は、(お粗末な) 例としてのみ使用されていることに注意してください。私はまだ、より意味のあるコマンドに対してこれを行いたいと思っています。
objective-c - NSTask を使用してツールの stdin にデータを渡す
実行中のある時点でユーザー入力を求めるツールがあるとします。たとえば、名前と住所を尋ねる場合があります。別の時点で、パスワード (およびパスワードの再入力) を要求される場合があります。
NSTask および NSPipe オブジェクトでこれらを処理すること、つまりコマンド ライン ツールと対話することは可能ですか?
objective-c - NSTask:userInfoディクショナリが提供されていないため、結論時にコンテキストを取得するにはどうすればよいですか?
NSTaskを介してコマンドラインユーティリティを使用してファイルを圧縮しようとしています。
擬似コード:
では、通知がどのファイルオブジェクトに関連しているかをどのように見つけることができますか?私は通常、そのようなことのためにuserInfoディクショナリを使用しますが、NSTaskにはそのようなオプションがありません。Apple Devから:この通知にはuserInfoディクショナリが含まれていません。
ありがとう!
objective-c - 起動後にNSTasks標準入力に書き込む
私は現在、NSTask、NSPipe、NSFileHandle ビジネスの穴に頭を悩ませようとしています。そこで、C コードをコンパイルして実行できる小さなツールを作成しようと考えました。また、stdout と stdin をテキスト ビューにリダイレクトできるようにしたいと考えていました。
これが私がこれまでに得たものです。この投稿のコードを使用して stdio をリダイレクトしました: What is the best way to redirect stdout to NSTextView in Cocoa?
そして、ここで stdoutDataAvailable メソッド
このプログラムは問題なく動作しています。stdout をテキスト ビューに出力し、inputPipe から "123" を読み取る C プログラムを実行しています。上記のコメントで示したように、必要に応じてタスクの実行中に入力を提供したいと思います。
というわけで、今質問が2つあります。
- 誰かが私のinputPipeからデータを読み取ろうとするとすぐに通知を受け取る方法はありますか?
- 1 に対する答えが「いいえ」の場合、別のアプローチを試すことはできますか? NSTask 以外のクラスを使用している可能性がありますか?
ヘルプ、サンプル コード、他のリソースへのリンクは大歓迎です。