前提・実現したいこと
C++でバックエンドのプログラムを書き、それのGUIとしてフロントエンドのプログラムをC#で書こうと思っています。
バックエンドのプログラムは、ただのハッシュ計算をするプログラムなのですが、最終的な出力は計算されたハッシュ値を、途中の出力はリアルタイムで進行度合いを出力し、それをフロントエンド側で受けたいと思っています。
バックエンドのプログラムはハッシュ値を出力できるようにはなりましたが、途中の進行度合いを出力して、フロントエンド側でそれを受け取るいい方法が思い浮かびません。
バックエンドのプログラムは標準出力にハッシュ値が出るようになっていますが、標準エラー出力にどれくらい何パーセント計算が終わったかを出力すればフロントエンド側から取れるのでしょうか?
フロントエンドから起動したモードになるような引数を用意して、バックエンドだけで利用したときと区別するようにすればバックエンドで利用したときに表示が汚くなることはないと思うのですが、それとも同じように起動して表示が汚くならないようなうまい方法があるのでしょうか?
バックエンド単体で起動したときはエスケープシーケンスの"\r"を利用して、パーセンテージをバーと数値で出すようにするつもりです。
現時点で環境依存なコードは書いていないので、可能ならば環境依存なコードをバックエンドに書きたくなく、それらはフロントエンド側でどうにかしようかなと考えています。
試したこと
ファイルに出力して、それを読むというのは考えましたが、異常終了したときにゴミが残ることも考えてできれば避けたいです。
可能であれば標準出力、エラー出力を使ってどうにかしたいですが、無理なら汎用的な別なものを利用したいです。
プロセス間通信についてあまり知識がないため、これについて調べる等がありましたらお願いします。
補足情報(FW/ツールのバージョンなど)
バックエンドのプログラムは単体でも動く、コンソールアプリケーションです。
また、バックエンドとフロントエンドで分けたいのは、バックエンドのプログラムに可搬性を求めるため、環境依存なものはフロントエンドだけにしたいです。
現状では、LinuxとWindowsどちらでも動くプログラムを作っています。
とっつきやすさとしてC#のXAMLを使ってフロントエンドを書くつもりです。
Qtで書けばどちらでも動くと思いますがC#の勉強も兼ねてC#にしています。
個人で書いてるプログラムなので、使うソフトウェアの制約等は他にないです。ライブラリを増やしてもいいです。
環境
- VS2017
- boost 1.67
回答3件
あなたの回答
tips
プレビュー