問題タブ [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.
objective-c - NSPipe、NSTaskを使ったプロセス間通信
NSPipe チャネルを使用して 2 つのスレッド間の通信を実現する必要があります。問題は、このメソッドを指定して端末コマンドを呼び出す必要がないことです。
データを書き込めばいいだけ
他のスレッドでこのメッセージを受信する
たとえば、C# でのこのようなことは、パイプが ID 文字列で登録される NamedPipeClientStream、NamedPipeServerStream クラスで簡単に実行できます。
Objective-Cでそれを達成する方法は?
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}'」では機能しません (出力はありません)。すべて)、しかし、ターミナルで実行すると、完全に正常に動作します。何故ですか?
nstask - NSpipe 経由で通信する個別のプロセス
NSPipe チャネルを使用して 2 つのアプリケーション間の通信を実現する必要があります。NSPipe はデータを書き込む必要があり、もう一方は 2 つの異なるアプリケーションの個別のプロセス間で通信するデータ (双方向) を読み取る必要があります。
たとえば、C# でのこのようなことは、パイプが ID 文字列で登録される NamedPipeClientStream、NamedPipeServerStream クラスで簡単に実行できます。
Objective-Cでそれを達成する方法はありますか?
よろしく、 ヴァディヴェル
cocoa - NSPipe または NSFileHandle を介して NSTask に EOF を送信する
stdin から渡された引数を処理する NSTask があります。引数は 経由で渡されNSFileHandle
ます。
正常に動作していますが、コマンド ライン ツールは、EOF シンボルを受け取るまで (Ctrl+C を押して) stdin から入力を読み取ります。
EOF 記号を ASCII 文字列に追加できるとは思わないので、オプションは何ですか? フィードバックをいただければ幸いです。
前もって感謝します!
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 では次のようになります。
objective-c - リリース モードで NSTask から stdout を読み取れない
私は次のように NSTask の stdout を読んでいます:
...
これを Xcode から実行すると問題なく動作します。コンソールに自分のタスクの stdout が表示され、receivedOutputFromAlgo が複数回ヒットします。ただし、アプリをアーカイブして.appパッケージをダブルクリックして実行するか、ターミナルから実行すると機能しません。そこから実行すると、console.appまたはターミナルでタスクstdoutが通過するのをまだ見ることができます。
この時点で標準出力とは見なされませんか? なぜこれがうまくいかないのでしょうか?
編集:リリースで最適化をオフにしようとしましたが、それも機能しませんでした。
objective-c - NSTask で adb コマンドを実行する
Cocoa で ADB コマンドを実行するためのシンプルな GUI を構築しています。NSTask を使用してシェル コマンドを実行する方法を説明している記事をいくつか見つけましたが、ADB に固有のものはなく、理解に苦慮しています。
簡単な ADB コマンドを実行でき
ますadb devices
。adb reboot
関数
電話
上記は正常に機能しますが、より複雑な引数を渡すと:
adb
ターミナルに入力したかのように、コンソール出力を取得します。NSTask のコマンドと引数をパッケージ化して ADB コマンドを実行するにはどうすればよいですか?
macos - NSPipe がすべてのデータを返さない
私はかなり長い間これに苦労しています。
を使用して他のプログラムと通信していますが、NSPipe
通知を受け取った場合を除いてすべて正常に動作し、NSFileHandleDataAvailableNotification
すべてのデータを利用できるわけではありません。
これまでのところ、パイプの読み取り部分はデータが利用可能であるという通知を受け取ることがわかりましたが、まだ完全に完了 (書き込み) されていません。この通知の直後に読んでも、部分的な反応しか得られません。しかし、スレッドをたとえば 0.1 秒間スリープ状態に設定してから読み取ると、すべて問題ありません。
パイプから完全な応答が得られることを確認する方法はありますか?
これまでのところ、私は持っています:
もちろん、通知オブザーバーが設定されています。そのセレクターは次のとおりです。
swift - Swift で Gnuplot を呼び出す
でいくつかのプロットを作成するために、swift から gunplot を呼び出そうとしています.png
。ただし、以下のプログラムは機能しません --- 結果の1.png
ファイルは空です。ただし、「set term aqua」をそのままにしておくと、プロットを含む aqua ウィンドウが呼び出されます。ただし、出力をファイル (png または pdf) に設定しようとすると、結果は常に空のファイルになります。
gnuplot コマンドは問題ありません --- 手動で正しく実行できます。
私はswiftとpipesの両方に慣れていないので、コードに何か問題があるか、推奨されていないか教えてください。