- ベストアンサー
独立した複数のプログラムを統合するには・・・?
現在、javaとCで書いた独立したプログラム(Cであればそれぞれがmain関数をもっている)が10個ほどあります。それらプログラムを適切な順番で実行したいのですが、いちいち実行させるのが面倒です。そこで、それらを一括して実行させたいのですがやり方がわかりません。Cで書いたプログラムが多く、それらのファイルは関数化により、ある程度一括処理できるのですが、途中でjavaのプログラムが入ってくるため、その部分は連結できません。また、Cの部分も関数化することで少し不都合が起きています。そこで現在は exeファイルを設定した順番通りに実行させるというフリーソフトを使っています。しかし、それでは多くの不都合があるので改善したいです。exeファイルを呼び出して実行し、その処理が終われば次のexeファイルを実行させるというような統合プログラムのようなものを作りたいのですがどのようにすればよいかわかりません。どなたかアドバイスいただけないでしょうか。 プログラミングの経験が非常に浅いもので質問がわかりづらいかもしれませんがよろしくお願いいたします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
Cが使えるのならばCで新たにEXEを作って、その中でそれぞれのEXE(やその他プログラム)をキックしてやればいいのでは? spawn系の関数で第1引数をP_WAITにすればキックした子プロセスが終了するまで待ちます。 以下は長すぎて入力できなかった参考URLです。 http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vclib/html/_crt__spawnl.2c_._wspawnl.asp
その他の回答 (4)
- tatsu99
- ベストアンサー率52% (391/751)
以下のような前提で良いのでしょうか。 1.実行するプログラムはあらかじめ決まっている。 2.またその実行する順序もあらかじめ決まっている。 3.>しかし、データの数によって処理時間が異なるためあらかじめ待機時間を決めることが出来ません。 これは、前のプログラムの完了後に次のプログラムを実行することが出来ないために、待機時間を設けたいと言うことですか。それとも、前のプログラムが終わった後、次のプログラムを実行する迄に、待機時間を入れたいということでしょうか。 上記、1,2についてyesであれば、バッチファイルを作成し、実行すれば良いと考えます。 但し、待ち時間を設けることは、バッチファイルではできないので(出来るかもしれませんが自信なし)その分は、C言語などでその機能を作成し、それを呼び出す必要があるかもしれません。
お礼
バッチファイルでやってみることにします。ありがとうございました。 >これは、前のプログラムの完了後に次のプログラムを実行することが出来ないために、待機時間を設けたいと言うことですか。それとも、前のプログラムが終わった後、次のプログラムを実行する迄に、待機時間を入れたいということでしょうか 前者のほうです。 各プログラムに同じ初期パラメータを与えてやる必要があるのでその点について考えてみようと思います。ありがとうございました
- jun2004
- ベストアンサー率42% (24/57)
バッチファイルにまとめれば、前のコマンドの終了後に次のコマンドが実行されます。 一番単純な方法だと思いますがどうでしょう。
お礼
早速バッチファイルでやってみようと思います。ありがとうございました
- tatsu99
- ベストアンサー率52% (391/751)
1.OSは何でしょうか? 2. >そこで現在は exeファイルを設定した順番通りに実行させるというフリーソフトを使っています。しかし、それは多くの不都合があるので改善したいです。 例えば、どのような不都合ですか?
補足
1.windowsXPです。 2.まずわたしの扱うデータというのが非常に多くのファイルであり、その数は毎回変わります。また、それぞれのプログラムが順番どおりに実行されなければいけません。フリーソフトでは実行ファイルを順番に実行してくれるという機能及び、各実行ファイルの実行の間に指定した待機時間をあけてくれる機能があります。しかし、データの数によって処理時間が異なるためあらかじめ待機時間を決めることが出来ません。完成したシステムはできるだけ使いやすくしたいので データによって毎回待機時間を指定しなければいけないという点が大きな不都合です。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
VBScriptでできると思います。 テキストで dim objWshShell Set objWshShell = WScript.CreateObject("WScript.Shell") objWshShell.Run "コマンド行1", 1, True objWshShell.Run "コマンド行2", 1, True objWshShell.Run "コマンド行3", 1, True と書いて、拡張子vbsで保存して実行してみて下さい。 文中1は、ノーマルウインドウを意味します(非表示や最小化して実行というのも選べます。) Trueは、プログラムの実行終了を待つ指定です。 返値でエラーコードを得ることができますので、それによって実行を制御するようなこともできます。
お礼
VBScriptは使ったことがないのですが バッチ処理以外のやり方として今後やってみようと思います。ありがとうございました
お礼
アドバイスを頂き、spawn()関数やsystem()関数を使ってみました。結局system()関数を用いてプログラムが完成しました。理想のものができました。ありがとうございました。