する質問をすることでしか得られない、回答やアドバイスがある。150前提・実現したいことC++でバックエンドのプログラムを書き、それのGUIとしてフロントエンドのプログラムをC#で書こうと思っています。バックエンドのプログラムは、ただのハッシュ計算をするプログラムなのですが、最終的な出力は計算されたハッシュ値を、途中の出力はリアルタイムで進行度合いを出力し、それをフロントエンド側で受けたいと思っています。バックエンドのプログラムはハッシュ値を出力できるようにはなりましたが、途中の進行度合いを出力して、フロントエンド側でそれを受け取るいい方法が思い浮かびません。バックエンドのプログラムは標準出力にハッシュ値が出るようになっていますが、標準エラー出力にどれくらい何パーセント計算が終わったかを出力すればフロントエンド側から取れるのでしょうか?フロントエンドから起動したモードになるような引数を用意して、バックエンドだけで利用したときと区別するようにすればバックエンドで利用したときに表示が汚くなることはないと思うのですが、それとも同じように起動して表示が汚くならないようなうまい方法があるのでしょうか?バックエンド単体で起動したときはエスケープシーケンスの"\r"を利用して、パーセンテージをバーと数値で出すようにするつもりです。現時点で環境依存なコードは書いていないので、可能ならば環境依存なコードをバックエンドに書きたくなく、それらはフロントエンド側でどうにかしようかなと考えています。試したことファイルに出力して、それを読むというのは考えましたが、異常終了したときにゴミが残ることも考えてできれば避けたいです。可能であれば標準出力、エラー出力を使ってどうにかしたいですが、無理なら汎用的な別なものを利用したいです。プロセス間通信についてあまり知識がないため、これについて調べる等がありましたらお願いします。補足情報(FW/ツールのバージョンなど)バックエンドのプログラムは単体でも動く、コンソールアプリケーションです。バックエンドとフロントエンドで分けたいのは、バックエンドのプログラムに可搬性を求めるため、環境依存なものはフロントエンドだけにしたいです。現状では、LinuxとWindowsどちらでも動くプログラムを作っています。とっつきやすさとしてC#のXAMLを使ってフロントエンドを書くつもりです。Qtで書けばどちらでも動くと思いますがC#の勉強も兼ねてC#にしています。個人で書いてるプログラムなので、使うソフトウェアの制約等は他にないです。ライブラリを増やしてもいいです。1.67attachmentクリップ0気になる質問をクリップするクリップした質問は、後からいつでもマイページで確認できます。クリップした質問に回答があった際、通知やメールを受け取ることができます。自分も答えを知りたい質問者以外のユーザにも役立つ評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。質問の評価を上げたことを取り消します低評価-評価を下げられる数の上限に達しました評価を下げることができません1日5回まで評価を下げられます1日に1ユーザに対して2回まで評価を下げられます質問の評価を下げるteratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。コメントをしてください。送信する質問の評価を下げる機能の利用条件この機能を利用するためには、以下の事項を行う必要があります。19:03標準出力、エラー出力を使う予定ということですが、コンソールアプリで良いのでしょうか。標準出力、エラー出力を使う予定ということですが、コンソールアプリで良いのでしょうか。12:17すみません、補足で質問に追記致します。すみません、補足で質問に追記致します。件sort評価が高い順sort新着順sort古い順linkcheckベストアンサー+1こんにちは。使って実現できるかと思います。実現したい内容に対して処理のボリュームが大きすぎるように感じますので、一例とお考え下さい。共有メモリを用意します。バックエンドのプログラムは進捗の度合いを都度書き込みます。フロントエンドのプログラムは定期的に共有メモリの現在の進捗を読み込んで表示します。この場合標準入出力に対する出力を必要としないため、コンソールに必要のない情報が出ないことも利点かと思います。マッチしそうな記事がありました。WPF)アプリとWin32アプリ(C++)でファイルマッピングを使って構造体データをプロセス間通信させるリアルタイムに進捗が知りたい場合は、バックエンドからオリジナルのウインドウメッセージを飛ばして更新を通知することも可能かと思います。参考になれば幸いでございます。評価が高い回答ほどページの上位に表示されます。remove低評価0回答の評価を下げる下記のような回答は推奨されていません。評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。12:24確かにやりたいことに対して使う道具が大きすぎますが、現状一番マッチしそうな感じがします。確かにやりたいことに対して使う道具が大きすぎますが、現状一番マッチしそうな感じがします。キャンセル完了するlink+1こんにちは。Processクラスが使えると思います。↓参考になると思います。評価が高い回答ほどページの上位に表示されます。remove低評価0回答の評価を下げる下記のような回答は推奨されていません。評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。12:26C#側のプログラムの参考にさせていただきます。C#側のプログラムの参考にさせていただきます。12:30バックエンド側がコンソールアプリで、それをC#から使い、かつ、バックエンドの標準入出力を使ってC#とデータをやり取りしたい場合は、適切な手法ですよ。意外によく使われている手法でもありますし。バックエンド側がコンソールアプリで、それをC#から使い、かつ、バックエンドの標準入出力を使ってC#とデータをやり取りしたい場合は、適切な手法ですよ。意外によく使われている手法でもありますし。12:37現状の構想としては、バックエンド内部で共有メモリ(グローバル変数は使いたくないのと関数の引数に進捗の度合いを入れる変数のポインタを渡すのも違和感があるため)を使って、計算部と表示部でマルチスレッドで動かして、それぞれ進捗がどれくらいかを受け渡し、標準出力にハッシュ値を出して、エラー出力に進捗度合いを吐き出すつもりです。フロントのC#側でバックエンドの標準出力のハッシュ値をProcessクラスを使って受け取るつもりです。フロント側で進捗の度合いをエラー出力で受け取るか共有メモリで受け取るかは未定ですが、ハッシュ値はバックエンドの標準出力に出すのが暫定ですので、Processクラスを使って受け取るのも暫定的に確定してます。現状の構想としては、バックエンド内部で共有メモリ(グローバル変数は使いたくないのと関数の引数に進捗の度合いを入れる変数のポインタを渡すのも違和感があるため)を使って、計算部と表示部でマルチスレッドで動かして、それぞれ進捗がどれくらいかを受け渡し、標準出力にハッシュ値を出して、エラー出力に進捗度合いを吐き出すつもりです。フロントのC#側でバックエンドの標準出力のハッシュ値をProcessクラスを使って受け取るつもりです。フロント側で進捗の度合いをエラー出力で受け取るか共有メモリで受け取るかは未定ですが、ハッシュ値はバックエンドの標準出力に出すのが暫定ですので、Processクラスを使って受け取るのも暫定的に確定してます。12:41データの受け渡し方を質問されていたのでは?既にProcessクラスを使って標準入出力でデータを受け渡しすることが確定しているのでしたら、何を質問されたかったのでしょうか?あ、Processクラスは当然標準エラー出力も受け取れますよ。あ、Processクラスは当然標準エラー出力も受け取れますよ。12:49あ、いえいえ、他の人の回答から共有メモリを、Chironianさんの回答からProcessクラスを使うことにしたので、暫定的に確定してるっていうのは回答を貰ってそういうことにするつもりになりましたってコメントでした。Chironianさんの回答を参考にしての構想ですよ。進捗度合いは単純に0~1000(つまり0.0%から100.0%)の数値を受け取って、表示する側でそれを文字で表現したり、プログレスバーで表現したりしたほうが簡単かなぁと思ったので、共有メモリで受け取ろうかなぁと思ってます。標準エラー出力で得られる文字列は単純な数値(上の0~1000)から、整形された文字列(計算中。25.2%)みたいなものに変換されて出力されるのでそれをいちいちパースしたりするのも面倒かなぁって感じです。あ、いえいえ、他の人の回答から共有メモリを、Chironianさんの回答からProcessクラスを使うことにしたので、暫定的に確定してるっていうのは回答を貰ってそういうことにするつもりになりましたってコメントでした。Chironianさんの回答を参考にしての構想ですよ。進捗度合いは単純に0~1000(つまり0.0%から100.0%)の数値を受け取って、表示する側でそれを文字で表現したり、プログレスバーで表現したりしたほうが簡単かなぁと思ったので、共有メモリで受け取ろうかなぁと思ってます。標準エラー出力で得られる文字列は単純な数値(上の0~1000)から、整形された文字列(計算中。25.2%)みたいなものに変換されて出力されるのでそれをいちいちパースしたりするのも面倒かなぁって感じです。