問題タブ [nspipe]

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 投票する
1 に答える
2461 参照

objective-c - NSPipe、NSTaskを使ったプロセス間通信

NSPipe チャネルを使用して 2 つのスレッド間の通信を実現する必要があります。問題は、このメソッドを指定して端末コマンドを呼び出す必要がないことです。

データを書き込めばいいだけ

他のスレッドでこのメッセージを受信する

たとえば、C# でのこのようなことは、パイプが ID 文字列で登録される NamedPipeClientStream、NamedPipeServerStream クラスで簡単に実行できます。

Objective-Cでそれを達成する方法は?

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

objective-c - なぜwaitForDataInBackgroundAndNotifyは複数の引数を持つリアルタイムモニターで動作しないのですか?

API の 1 つから次のコードを見つけました。それを使用して、vm_stat 1 のリアルタイム監視を実行しようとしています。

========

setArguments 行を見てください。最初の行は「/usr/bin/vm_stat 1」で問題なく動作しますが、2 行目は「/usr/bin/vm_stat 1 | /usr/bin/awk '{print $1}'」では機能しません (出力はありません)。すべて)、しかし、ターミナルで実行すると、完全に正常に動作します。何故ですか?

0 投票する
0 に答える
139 参照

nstask - NSpipe 経由で通信する個別のプロセス

NSPipe チャネルを使用して 2 つのアプリケーション間の通信を実現する必要があります。NSPipe はデータを書き込む必要があり、もう一方は 2 つの異なるアプリケーションの個別のプロセス間で通信するデータ (双方向) を読み取る必要があります。

たとえば、C# でのこのようなことは、パイプが ID 文字列で登録される NamedPipeClientStream、NamedPipeServerStream クラスで簡単に実行できます。

Objective-Cでそれを達成する方法はありますか?

よろしく、 ヴァディヴェル

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

cocoa - NSPipe または NSFileHandle を介して NSTask に EOF を送信する

stdin から渡された引数を処理する NSTask があります。引数は 経由で渡されNSFileHandleます。

正常に動作していますが、コマンド ライン ツールは、EOF シンボルを受け取るまで (Ctrl+C を押して) stdin から入力を読み取ります。

EOF 記号を ASCII 文字列に追加できるとは思わないので、オプションは何ですか? フィードバックをいただければ幸いです。

前もって感謝します!

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

macos - 一度に NSTask を使用する複数の端末コマンド

OSX アプリから次のコマンドを実行する必要があります。

dscl 。-read /Users/user JPEGPhoto | テール -1 | xxd -r -p > /Users/user/Desktop/user.jpg

次のようないくつかのことを試しました。

問題は、これらのメソッドは呼び出しごとに 1 つのコマンドを実行するため、3 回 (dscl/tail/xxd) 呼び出す必要があり、機能しません。

ターミナルで別々に試したところ、どちらも機能しませんでした。

助言がありますか?ありがとう

アップデート:

Ken Thomases のすばらしいアドバイスに従うと、Swift では次のようになります。

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

objective-c - リリース モードで NSTask から stdout を読み取れない

私は次のように NSTask の stdout を読んでいます:

...

これを Xcode から実行すると問題なく動作します。コンソールに自分のタスクの stdout が表示され、receivedOutputFromAlgo が複数回ヒットします。ただし、アプリをアーカイブして.appパッケージをダブルクリックして実行するか、ターミナルから実行すると機能しません。そこから実行すると、console.appまたはターミナルでタスクstdoutが通過するのをまだ見ることができます。

この時点で標準出力とは見なされませんか? なぜこれがうまくいかないのでしょうか?

編集:リリースで最適化をオフにしようとしましたが、それも機能しませんでした。

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

objective-c - NSTask で adb コマンドを実行する

Cocoa で ADB コマンドを実行するためのシンプルな GUI を構築しています。NSTask を使用してシェル コマンドを実行する方法を説明している記事をいくつか見つけましたが、ADB に固有のものはなく、理解に苦慮しています。

簡単な ADB コマンドを実行でき
ますadb devices
adb reboot

関数

電話

上記は正常に機能しますが、より複雑な引数を渡すと:

adbターミナルに入力したかのように、コンソール出力を取得します。NSTask のコマンドと引数をパッケージ化して ADB コマンドを実行するにはどうすればよいですか?

0 投票する
0 に答える
107 参照

macos - NSPipe がすべてのデータを返さない

私はかなり長い間これに苦労しています。

を使用して他のプログラムと通信していますが、NSPipe通知を受け取った場合を除いてすべて正常に動作し、NSFileHandleDataAvailableNotificationすべてのデータを利用できるわけではありません。

これまでのところ、パイプの読み取り部分はデータが利用可能であるという通知を受け取ることがわかりましたが、まだ完全に完了 (書き込み) されていません。この通知の直後に読んでも、部分的な反応しか得られません。しかし、スレッドをたとえば 0.1 秒間スリープ状態に設定してから読み取ると、すべて問題ありません。

パイプから完全な応答が得られることを確認する方法はありますか?

これまでのところ、私は持っています:

もちろん、通知オブザーバーが設定されています。そのセレクターは次のとおりです。

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

swift - Swift で Gnuplot を呼び出す

でいくつかのプロットを作成するために、swift から gunplot を呼び出そうとしています.png。ただし、以下のプログラムは機能しません --- 結果の1.pngファイルは空です。ただし、「set term aqua」をそのままにしておくと、プロットを含む aqua ウィンドウが呼び出されます。ただし、出力をファイル (png または pdf) に設定しようとすると、結果は常に空のファイルになります。

gnuplot コマンドは問題ありません --- 手動で正しく実行できます。

私はswiftとpipesの両方に慣れていないので、コードに何か問題があるか、推奨されていないか教えてください。