問題タブ [anonymous-pipes]

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

c++ - 匿名パイプ

私は無名パイプを使用して通信する2つの短いプログラムを作成しました。親プロセスは、子の標準IOハンドルを設定することにより、パイプハンドルを共有します。

子は、 GetStdHandleの呼び出しで読み取りパイプハンドルを取得します。

私の質問は、パイプハンドルは、親と子が通信を終了すると、それらに対してCloseHandle ()を呼び出す親プロセスによって作成されます。

子供もCloseHandle()を呼び出す必要がありますか?これらは標準のIOハンドルであるため、プロセスが折りたたまれたときに自動的に割り当てが解除されると考えていました。

ありがとう!

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

windows - Win32:無名パイプでのトランザクション

TransactNamedPipe関数のドキュメントには、「このパラメーターは、CreatePipe関数によって返される無名パイプへのハンドルにすることもできます」と記載されています。これは、無名パイプでトランザクションを使用できることを意味します。私が理解しているように、トランザクションは読み取り/書き込み操作であり、無名パイプは読み取りまたは書き込みのいずれかです-それは私には意味がありません。

  1. 匿名パイプでトランザクションを使用することは本当に可能ですか?
  2. はいの場合、どのように?たとえば、CreatePipeの呼び出しから取得した2つのハンドルのどちらを、TransactNamedPipeに渡す必要がありますか?
0 投票する
2 に答える
1250 参照

c - 匿名パイプとGrepコマンド

私は無名パイプを使用して次のパイプを実装しようとしています:

プログラムがgrepコマンドでハングしているようですが、理由がわかりません。grepではなく他のコマンドを試してみましたが、完全に機能しました。

これまでのコードは次のとおりです...

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

windows - 開いている匿名パイプのリストを取得するにはどうすればよいですか

古い質問のフォローアップとして: Windows で開いているすべての名前付きパイプのリストを取得するにはどうすればよいですか? 、プロセスが匿名パイプを使用してその子と通信するかどうかを確認する必要がある状況にあります。これを行う方法はありますか?pipelist と process-explorer を試しましたが、 NamedPipes のリストのみが表示されるようです

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

c++ - 名前パイプを明確にする必要があります

私はMSDNで無名パイプを読んでいました。「プロセスは、DuplicateHandle関数を使用してパイプハンドルを複製し、DDEや共有メモリなどの何らかのプロセス間通信を使用して無関係のプロセスに送信することもできます。」

私はその声明に納得していませんでした。すでに知っているように、パイプは親子間で通信するのに役立ち、複製ハンドルは元のハンドルと同じオブジェクトを参照します。 http://msdn.microsoft.com/en-us/library/windows/desktop/aa365141%28v=vs.85%29.aspx

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

c# - 匿名パイプはここに行く正しい方法ですか?

2 つの exe で構成されるアプリケーションがあります。MyApp.exeそれらを と と呼びましょうMyAppStarter.exe。私が持っている理由は、利用可能MyAppStarter.exeな新しいバージョンがあるかどうかを最初にネットワークでチェックして、MyApp.exe開始する前にコピーできるようにするためです-しかし、それは今ではやや意味がありません.

私が達成したいのは、カスタム URL プロトコル ハンドラーを登録して、MyAppStarter.exe何らかの開始条件を に渡すことができるようにすることMyApp.exeです。たとえば、ユーザーが電子メール内のmyapp://userid=123へのリンクをクリックすると、アプリケーションが起動し、ユーザー ID が 123 のユーザーがすぐに表示されます。または、リンクがmyapp://accid=456の場合accid 456 のアカウントをすぐに表示する必要があります。カスタム URL プロトコル ハンドラーを登録してから、特定の引数を使用してMyAppStarter.exeシェルを作成する方法を知っています。MyApp.exeここまでは順調ですね。

今の問題は、MyApp.exeすでに実行されている必要があることです。それMyAppStarter.exeを認識し (これは私が実行できます)、それにフォーカスを与え (これも実行できます)、指定された ID を持つユーザーまたはアカウントなどを表示するように指示します (これは私が立ち往生しているところです)。

How to Use Anonymous Pipes for Local Interprocess Communicationに関するMSDNのドキュメントを見てきました。単純明快に思えますが、不明な点が 2 つあります。

  1. 最初にパイプを確立できるように、2 つの間でパイプ ハンドルを通信するにはどうすればよいですか? MyApp.exeが実行された時点ですでに実行されている可能性があることに注意してくださいMyAppStarter.exe

  2. 私のシナリオでは、それMyAppStarter.exeがサーバーMyApp.exeになり、クライアントになると思います。MyApp.exeこれは、 からの命令をパイプで頻繁にチェックするタイマーを設定する必要があることを意味しMyAppStarter.exeます。私はこの考えに腹を立てていません。この要件は、MyApp.exe1秒ごとにタイマーを起動するための操作のごくわずかな部分であるということだけです。私はそれが好きだっMayApp.exevoid PerformInstruction(string instruction).MyAppStarter.exe

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

linux - Bash 匿名パイプ

特定のタスクを実行する一連のコマンドを設計しているときに、匿名パイプが期待どおりに動作しないという問題に遭遇しました。私が実行している元のコマンドは複雑すぎてここで説明できないため、問題を示す例を作成しました (これらのコマンドはすべて基本的に何もしていないことがわかっています)。また、データが実際に入力から出力にコピーされているかどうかを示すために pv を使用しています。

これは期待どおりに機能します。(/dev/zero から /dev/null にデータをコピーします)

これも期待どおりに機能します (データを複製し、両方のコピーを /dev/null に送信します)。

このコマンドは部分的にしか機能しません。STDIN から STDOUT へのコピーは引き続き機能しますが (1 つの pv に短時間進行状況が表示されます)、コマンド全体が無名パイプによって停止されます。匿名パイプは何も受信せず、出力の 1 つに書き込むことができないため、t が停止します。 (/dev/null の代わりにファイルに書き込むようにして、これを確認しました)。

なぜこれが bash で機能しないのか (予想どおり?) を知っている人がいれば、喜んで助けてくれます。

PS: bash の代わりに zsh を使用すると、コマンドは期待どおりに実行されます。残念ながら、これを実行する必要があるシステムには zsh がなく、そのシステムに zsh を展開する方法がありません。

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

c# - C#でサードパーティアプリからテキストボックスの値を取得する

ランダムなサードパーティアプリケーションが開かれ、入力され、ボタンがクリックされたときに検出する必要がある、バックグラウンドで動作する C# アプリケーションを開発しようとしています。

プロセスとしてサードパーティ アプリの情報を取得できることはわかっていますが、すべてのコントロールを繰り返し処理して値を取得することは可能ですか?

「匿名パイプ」について読んだことがありますが、このような場合にそれらを実装できるかどうか、およびその方法はわかりません。

私の最終的な目標は、同じアプリで「印刷」ボタンがクリックされたときに、アプリ内の特定のテキストボックスの値を取得することです。サードパーティのアプリは私が開発したものではないため、.exe としてしか持っていませんが、テキスト ボックス、ラベル、ボタンがあることがわかります。