java(Minecraft)にプログラムがあり、そのサーバーの部分ではターミナルで開き、ユーザーにコマンドの入力を求めるとともに、進行状況のロードなどのフィードバックを求めますもの。自動的にターミナルにコマンドを送信し、応答を受け取るためにC++の "ラッパー"を作る方法はありますか?実行可能ファイルの入力と出力をC++でラップする
GUI要素を使ってsayやkickなどのコマンドを自動化することができました。私はOSX LionでMacを走らせています。
java(Minecraft)にプログラムがあり、そのサーバーの部分ではターミナルで開き、ユーザーにコマンドの入力を求めるとともに、進行状況のロードなどのフィードバックを求めますもの。自動的にターミナルにコマンドを送信し、応答を受け取るためにC++の "ラッパー"を作る方法はありますか?実行可能ファイルの入力と出力をC++でラップする
GUI要素を使ってsayやkickなどのコマンドを自動化することができました。私はOSX LionでMacを走らせています。
おそらく、stdin/stdoutを読み書きします。バイナリ(この場合はjava.exe)をC++で実行し、その読み書き方法を調べる必要があります。あるいは、テキスト出力を解析することなくコントロールを提供するラッパーをJavaで記述することもできます。
この質問に対する回答は、オペレーティングシステムによって異なります。異なるシステムでは、標準の入出力チャネルを処理する方法が異なります。 UNIXシステムでは、パイプ(2)(または標準出力と標準エラーを別々に取得する場合は2つ)を作成し、「サーバー」をfork(2)し、close(2)とdupさまざまなファイル記述子を適切な場所に配置し、実際のプログラムをexecve(2)します。この後、さまざまなディスクリプタを読み書きできます。
申し訳ありませんが、私は実行していたOSを入れるのを忘れていました。私がMacを使っていたのと同じだろうか? – alexy13
はい。その場合の実行可能ファイルは/ usr/bin/javaですが、コンセプトは同じです。 –