3

助けてください、どうすればプロセス-プロセスデータ交換を整理できますか(それが重要な場合は、Windowsで)?

いくつかのコマンドライン引数を使用したprocess1.exe呼び出しがあります。fromprocess2.exeの「進捗状況」を追跡したい(たとえば、何らかの値)。それ(その値)は、永続的に、または各Xミリ秒からアクセスできます-関係ありません。process2process1intintprocess1

WinApiまたはQtなどのあらゆるソリューションに役立ちます。

みなさん、ありがとうございました!すべての答えはとても役に立ちます!:) どうもありがとう!!

4

5 に答える 5

5

OTOH:

  • stdin/stdoutリダイレクト
  • 名前付きパイプ(CreateNamedPipe)
  • 匿名パイプ(CreatePipe)
  • ソケット(ソケット、接続、バインド)
  • 共有メモリ(CreateFileMapping、MapViewOfFile)
  • Windowsメッセージ(例:WM_APP)

いずれかを選択してください-Windowsメッセージまたは共有メモリの方が簡単な場合があります。

于 2011-03-08T00:22:32.403 に答える
4

ここには多くのオプションがあります。

  1. process2の標準出力をリダイレクトして、更新を出力させることができます。
  2. stdoutが他の目的で使用されている場合は、プロセス間で名前付きパイプを使用できます
  3. 名前付き共有メモリを使用することもできます。これにより、必要なオーバーヘッドが少なくなり、実装が簡単になる可能性があります(欠点は、プロセス間の同期も行う必要がある場合があることです)。
  4. process1がメッセージポンプを実行している場合は、通常のWindowsメッセージを使用することもできます(WM_COPYDATAを参照)。
于 2011-03-08T00:17:24.717 に答える
3

いくつかの方法があります:

  • ソケット
  • メッセージ
  • 共有メモリ(ファイル)

問題は、Process2がブロードキャストし、Process1がリッスンすることです。Process1は、Process2がいつ終了したか、そしておそらく完了率を知る必要があります。

Socketsがより良いルートになると思いますが、それはアプリケーション、開発スケジュール、および概念の知識に依存します。

于 2011-03-08T00:19:35.570 に答える
1

これまでに提示されたオプションの明らかな省略はCOMです。「COMはがらくた」という通常の応答を期待していますが、私の経験ではそうではありませんでした。

于 2011-03-08T01:39:38.833 に答える
1

Windows Api(SendMessage)を使用してメッセージを送信するだけです。

于 2011-03-08T00:16:14.170 に答える