1

一部のデータを myApp の stdin にリダイレクトするスクリプト vbs があります (Windows では C で記述されています)。myApp が最初の myApp セッションの PID を検出し、標準入力を介して受信した入力を、標準入力を処理する myApp の最初のセッションの標準入力にリダイレクトする前に、myApp がすでに起動されている場合。したがって、myApp が stdin を受け取り、myApp の他のインスタンスが実行されていない場合、myApp は stdin を処理し、処理を行います。したがって、問題は次のとおりです。このsecnd sppのPIDを知っているアプリから別のアプリに標準入力をリダイレクトする方法は? 言語 = C プラットフォーム = MSwindows

4

2 に答える 2

1

これはあなたの役に立ちますか?http://msdn.microsoft.com/en-us/library/ms682499%28VS.85%29.aspx

この記事では、匿名パイプを使用してリダイレクトされた IO を持つ子プロセスを作成します。名前付きパイプを使用できます。この関数を使用して: http://msdn.microsoft.com/en-us/library/aa365144%28VS.85%29.aspx名前付きパイプが既に存在するかどうかをテストできます - 存在しない場合は、パイプを作成してその入力を待ちます。

複数のファイルが同じ名前付きパイプに書き込むかどうかはわかりません-すべてのデータが1つのファイルのように送信されると想定しているため、クライアントごとに新しい名前付きパイプをインスタンス化し、そのパイプを追加するネゴシエーターとして1つの名前付きパイプを使用します待機するパイプのリストに。新しいパイプを介したメッセージで閉じます。

別のプロセスのハンドルをリダイレクトするのはそれほど簡単ではないと思います(私が間違っている場合は誰かが私を訂正してください)。

于 2010-01-22T22:13:09.730 に答える
0

プログラムのソースを書く機会があれば、名前付きパイプのアイデアに移ります。App1 のメイン プロセスは、App の別のインスタンス (つまり、App0) が既に実行されているかどうかを確認します。その場合、App1 によって受信された stdin は名前付きパイプ X にリダイレクトされます。App0 は名前付きパイプ X を使用して入力を受信し続けます。そのため、App0 と App の他のすべてのインスタンス (App2、e、4...) は名前付きパイプを介して通信します。 . NineFingers ありがとうございました。とても役に立ちました。

于 2010-01-23T11:35:06.073 に答える