2012-02-09 8 views
0

システムを使用しているC++から.exeを実行しようとしています。 .exeを呼び出した後に、テキストファイルの引数が要求されます。私はこの議論を提供する方法が必要です。私は今、それが動作bashで呼び出されるプログラムの引数を提供する方法

inputfile.txt 

を入力した場合

cd /programlocation 
wine program.exe 
その後、

この出力、

Enter input file name : 

を、私は理解することはできません。

bashで明確にするために、私はこれを行うことができます私はC++のシステムを使って実行できるので、この最後のステップを組み合わせる方法です。

ie。これは動作しません:

これはちょうどコンソールに入力ファイルを要求します。

私が実行しようとしているプログラムにアクセスできるのは、a8711v30 esdu航空機エンジンのノイズ予測ファイルです。

+0

EXEに引数を渡すか、いくつかのデータを生成されたプロセスのSTDINにプッシュしますか? – AlG

+0

いくつかのデータを、生成されたプロセスのSTDINにプッシュします。 – wookie1

答えて

1

PROGRAM.EXEは、端末からの標準入力から読み込むとされていない場合は、文字列を使用してシステムを呼び出すことができるかもしれないシステムを使用して(3)意志ほとんどの場合、十分に機能します。

system(3)ライブラリ関数は、ほとんどのオペレーティングシステムで解釈のために文字列引数を/ bin/shに渡します。これは、おそらく私がget -erer-doneモードで行っていたことです。 LinuxとUnixでは、うまくいくでしょう...あなたのmanページを見てください。歴史的に、人々は、利用可能なコマンドプロセッサについていつも仮定することができないという理由でsystem()から離れました。おそらくそれほど心配しないでしょう。

エフェメメントスケッチの戦略はより移植性が高いので、あなたが/ bin/shでどういったことを確かめることができない場所でコードを実行するのが望ましいでしょう。このアプローチでは、あなたのコードはその/ bin/shパッケージを簡単にフォークして配管するという仕事を引き継ぎます。

+0

ありがとうございます。 – wookie1

2

"inputfile.txt"は、wine program.exeの標準入力に入ります。それはバッシュが理解できるコマンドではない。外部プログラムからの/パイプに

、手動でforkpipeとSをすることができ、またはsystemのあなたの現在の使用に近いだろうpopenを使用しています。

 
cd /programlocation && echo inputfile.txt | wine program.exe 
+0

助けてくれてありがとう。 – wookie1

0

うん:

FILE *cmd_stdin = popen(command.c_str(), "w"); 
fprintf(cmd_stdin, input); 
fclose(cmd_stdin); 
+0

POSIXは、 'popen'が' sh -c '...'を使って 'system'と同じように指定します。 – ephemient

関連する問題