子プロセスから親にデータを送信する必要があります。このデータの一部はHTML、プレーンテキストなどですが、画像データ、zipファイルデータなどを送信する必要がある場合もあります。
私が理解しているように、無名パイプは子プロセスの標準入力と標準出力を使用します。従来、stdinとstdoutはテキストデータのみを伝達します。このメカニズムを使用して印刷不可能な文字を送信することに問題はありますか?
子プロセスから親にデータを送信する必要があります。このデータの一部はHTML、プレーンテキストなどですが、画像データ、zipファイルデータなどを送信する必要がある場合もあります。
私が理解しているように、無名パイプは子プロセスの標準入力と標準出力を使用します。従来、stdinとstdoutはテキストデータのみを伝達します。このメカニズムを使用して印刷不可能な文字を送信することに問題はありますか?
名前パイプとstdin/outの間に関係はありません。1つのプロセスにはstdin/outが1つしかないため、その方法ではプロセスごとに1つの無名パイプしか作成できません。これはばかげているように聞こえますね。はい、子プロセスのstdin/outをパイプにリダイレクトできます。ただし、子プロセスが別の手段(ログファイルやネットワークアクティビティなど)で自分自身を報告できる場合は、そうする必要はありません。の呼び出しCreatePipe
により、ハンドルの読み取りと書き込みが可能になります。ハンドルの使用方法はユーザー次第です。任意のバイナリデータを送信することは確かに可能です。匿名パイプは、その点で名前付きパイプとまったく同じです。
stdin / stdoutリダイレクトを使用してパイプハンドルを子プロセスに渡すことを選択した場合でも、子プロセスがCランタイムライブラリ関数ではなくWindows APIを使用してデータを送信するのであれば、問題はありません。 。
つまり、WriteFile
完全に機能しprintf
ますが、お勧めできません。
GetStdHandle
を使用して、WindowsAPI関数で使用するパイプへのハンドルを取得できます。