問題タブ [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.

0 投票する
2 に答える
375 参照

iphone - NSTaskから呼び出されると、GDBは不可解なエラーをスローします

NSTaskを使用してGDBを呼び出そうとすると、変数「resultStringID」は実際には対応するプロセスIDであり、「abc」は単なるNSStringです。GDBを呼び出すための私のコードは次のとおりです

どんな助けでも大歓迎です!:)

タスク起動の出力は次のようになります。

0 投票する
3 に答える
1149 参照

iphone - アプリケーションがジェイルブレイクされた iPhone にデプロイされると、GDB の奇妙な動作が発生する

NSTask を介して GDB にコマンドを送信し、出力を UITextView に送信するアプリケーションを作成しようとしています。Mac (iOS シミュレーター) で問題なく動作します。ただし、実際のデバイス (iPhone) に展開すると、コマンド「info register」の後にレジスタが表示されません。コードは次のとおりです。

IOS シミュレーターの出力は次のようになります (x86 レジスター)

ここに画像の説明を入力

実際のデバイス (iPhone) での出力は次のようになります。

ここに画像の説明を入力

iPhone で実行した場合のビルド出力は次のようになります。

補足として、引数 -arch armv7* を追加しようとさえしました。指定されたプロセスに接続できません。

編集:私は自分の悩みの原因を見つけたかもしれません。これは、アプリケーションを介して iPhone で gdb を呼び出そうとしたときにコンソールに表示されました。

誰かがこの問題を回避する方法を知っている場合は、親切に共有してください。私は何週間も解決策を探していましたが、役に立ちませんでした...

0 投票する
1 に答える
623 参照

iphone - GDBをプロセスIDに接続し、そのARMレジスタをiPhoneにリストする最良の方法は?

疑問に思っているのですが、GDBをプロセスIDに接続し、そのARMレジスタをiPhoneに(ココアアプリを介して)リストするための最も信頼できる/最良の方法は何ですか?私はかなり長い間NSTaskを試してきました、それは特定のプロセスのx86レジスターをリストすることができます(iOSシミュレーターを通して)。ただし、iPhoneにデプロイすると、機能しません。私がiPhoneで探しているような非同期操作を成功させる人はまだいません。Applescriptを使用してgdbコマンドを含むbashスクリプトを実行することを考えていましたが、そのようなタスクの実行可能性についてコメントしたい人はいますか?

どんな助けでも大歓迎です!

この目的のためにNSTaskを使用する私の試みはここにあります:

アプリケーションがジェイルブレイクされたiPhoneにデプロイされた後の奇妙なGDBの動作

0 投票する
3 に答える
1265 参照

objective-c - Obj-C デザイン パターン : 並列タスク ランチャー

私は現在、GraphicsMagick の助けを借りて、多くの画像を次々に処理するシェル スクリプトを持っています。それは正常に機能し、すべての計算が正しく、すべてが機能します。(これは「単純な」スクリプトではありません。JSON ファイルから寸法を読み取り、多くの制約に関して一連の画像を変換する必要があります)。

デュアルコアまたはクアッドコアのコンピューターで作業しているため、並列化したいと考えています。また、私は iPhone 開発者であり、Mac 開発について自己紹介するのが好きなので、「コマンドライン ツール」テンプレートを使用して、XCode と Objective-C で作成したいと考えています。

ここまでは順調ですが、「タスク ディスパッチャ」オブジェクトの設計に直面しています。GCDの有無にかかわらず、ARCの有無にかかわらず、ブロックを使用して、実行ループ、個別のスレッドでNSTaskを実行する間でかなり迷っています。

どうすればこれを達成できますか?単純なスレッドを使用して NSTask を生成し、完了時に報告させ、ディスパッチャーのデリゲートに通知して進行状況バーをアップグレードできるようにすることを考えていました。でもどうしてもGrand Central Dispatchに連絡したいんです。何をすべきか、何をすべきでないかについて、考え、アイデア、アドバイスを持っている人はいますか?

編集: Apple のドキュメントを読んでいて、NSOperationQueue クラスを見つけました。これはまさに私がここで必要としているものでしょうか?

0 投票する
2 に答える
1397 参照

cocoa - NSFileHandle にデータがあるかどうかを確認するにはどうすればよいですか?

私は 3 つの NSPipe で構成された NSTask で作業しており、standardOutput と standardError から読み取りたいと考えています。私は内部でそれを行います-stdoutの場合は1番目、stderrの場合は次です。私のコードはすでに別のスレッドで実行されているため、readInBackgroundAndNotify と waitForDataInBackgroundAndNotify を使用できません。そこで NSRunLoop を実行して新しいバックグラウンド スレッドを切り離したくありません...これらのチャネルのいずれかに存在するデータ。

だから私はこのコードを使用します:

ただし、isReadable が YES を返し、[fileHandle availableData] を呼び出すと、スレッドはまだブロックされます。なんで?isReadable が YES を返したときに、ブロックせずに availableData メソッドを呼び出すことを期待していました。

0 投票する
2 に答える
3416 参照

objective-c - メインスレッドをブロックするNSTask

NSTaskを使用していますが、タスクを起動すると、タスクが終了するまでメインスレッドがブロックされます(更新できません)。これは私のコードです:

メインスレッドをブロックするものを読んで-waitUntilExitいますが、使用していないので、何が間違っているのかわかりません。

0 投票する
1 に答える
830 参照

cocoa - Lion で NSTask を使用してプレビューで pdf/jpg を開く方法は?

Snow Leopard でうまく動作する次のコードがあります。一時ディレクトリに保存されているファイルを優先アプリケーションで開きます。

しかし、 Lion ではまったく機能しません。次のエラーが発生し、プレビュー (および TextEdit) にエラー ダイアログが表示されます。他のエディターはうまく機能します (TextMate など)。

~/Library/Containersのパーミッションを変更する方法を説明している Preview と TextEdit で Lion の問題を修正する方法の多くのヒントを見つけましたが、Cocoa からドキュメントを開く際の問題は解決しませんでした。

Preview と TextEdit は、finder を使用する場合と、コマンドopen -a "/Applications/Preview.app/Contents/MacOS/Preview" pathToFileを発行するときに NSTask を使用する場合に問題なく同じファイルを開くことができますが、それでは十分ではありません。 、アプリケーションがいつ閉じられ、すぐに開いて終了するかを調べる必要があるためです。

誰か私に正しい方向を教えてください。私はすでにこの問題に2日間費やしました。どうもありがとうございました!

0 投票する
1 に答える
623 参照

cocoa - ETXをNSTaskに送信する

私が書いた別のプログラムを実行しているNSTaskがあります。そのコマンドラインプログラムでは、ETX(control-C、またはASCII値3)がプロセスの1つを一時停止し、別の関数を呼び出すことを想定しています。どうすればこれを送ることができますか?プログラムは、ETXを除いて、これまでに送信したすべてのコマンドと対話するため、コマンドを正しく送信していることはわかっています。次のコードを使用していますが、機能しません。

0 投票する
1 に答える
1525 参照

cocoa - シェルコマンド「ping」を実行し、Objective-C / Cocoaで結果を文字列に変換する方法は?

このコードを試しました

そしてこれを手に入れました

0 投票する
1 に答える
3850 参照

macos - コードが LaunchDaemon として実行されている場合、再起動せずに初めて LaunchAgent を起動するにはどうすればよいでしょうか?

LaunchDaemon があります。実行すると、SIMBL がインストールされているかどうかがチェックされます。SIMBL がインストールされていない場合は、NSTask を使用して SIMBL.pkg で /usr/sbin/installer を実行します。

次に、SIMBL の postflight スクリプトは、launchctl load コマンドを実行して、SIMBL の LaunchAgent をすぐに開始しようとします。

私の LaunchDaemon の NSTask 環境には $USER が設定されていないため、これは失敗します。

システム構成フレームワークを使用してデーモンに現在のユーザーを検出させ、それを setEnvironment を使用して NSTask に渡すと、launchctl でバグが発生します。

定義上、デーモンはユーザーセッションで動作してはならないことを認識しています。同様に、Apple は LaunchAgents を LaunchDaemons のヘルパー オブジェクトとして推奨しているようで、そのユーザー セッションの作業を行います。そのようなエージェントをすぐに稼働させる方法はありますか?

私はすべての .plist を適切な場所に置いています (再起動後に起動し、次回 launchctl が通常の読み込みを行うときに)、最初に考えたのは、launchctl にリロードするように指示することでした。ただし、これを行うコードはすべて launchctl.c でコメントアウトされています

...