• ベストアンサー

独立した複数のプログラムを統合するには・・・?

現在、javaとCで書いた独立したプログラム(Cであればそれぞれがmain関数をもっている)が10個ほどあります。それらプログラムを適切な順番で実行したいのですが、いちいち実行させるのが面倒です。そこで、それらを一括して実行させたいのですがやり方がわかりません。Cで書いたプログラムが多く、それらのファイルは関数化により、ある程度一括処理できるのですが、途中でjavaのプログラムが入ってくるため、その部分は連結できません。また、Cの部分も関数化することで少し不都合が起きています。そこで現在は exeファイルを設定した順番通りに実行させるというフリーソフトを使っています。しかし、それでは多くの不都合があるので改善したいです。exeファイルを呼び出して実行し、その処理が終われば次のexeファイルを実行させるというような統合プログラムのようなものを作りたいのですがどのようにすればよいかわかりません。どなたかアドバイスいただけないでしょうか。 プログラミングの経験が非常に浅いもので質問がわかりづらいかもしれませんがよろしくお願いいたします。

  • oais
  • お礼率75% (22/29)

質問者が選んだベストアンサー

  • ベストアンサー
  • 0x131cc6e
  • ベストアンサー率36% (42/115)
回答No.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

oais
質問者

お礼

アドバイスを頂き、spawn()関数やsystem()関数を使ってみました。結局system()関数を用いてプログラムが完成しました。理想のものができました。ありがとうございました。

その他の回答 (4)

  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.4

以下のような前提で良いのでしょうか。 1.実行するプログラムはあらかじめ決まっている。 2.またその実行する順序もあらかじめ決まっている。 3.>しかし、データの数によって処理時間が異なるためあらかじめ待機時間を決めることが出来ません。 これは、前のプログラムの完了後に次のプログラムを実行することが出来ないために、待機時間を設けたいと言うことですか。それとも、前のプログラムが終わった後、次のプログラムを実行する迄に、待機時間を入れたいということでしょうか。 上記、1,2についてyesであれば、バッチファイルを作成し、実行すれば良いと考えます。 但し、待ち時間を設けることは、バッチファイルではできないので(出来るかもしれませんが自信なし)その分は、C言語などでその機能を作成し、それを呼び出す必要があるかもしれません。

参考URL:
http://www25.cds.ne.jp/~kamiken/bach/bach.html
oais
質問者

お礼

バッチファイルでやってみることにします。ありがとうございました。 >これは、前のプログラムの完了後に次のプログラムを実行することが出来ないために、待機時間を設けたいと言うことですか。それとも、前のプログラムが終わった後、次のプログラムを実行する迄に、待機時間を入れたいということでしょうか 前者のほうです。 各プログラムに同じ初期パラメータを与えてやる必要があるのでその点について考えてみようと思います。ありがとうございました

  • jun2004
  • ベストアンサー率42% (24/57)
回答No.3

バッチファイルにまとめれば、前のコマンドの終了後に次のコマンドが実行されます。 一番単純な方法だと思いますがどうでしょう。

参考URL:
http://www25.cds.ne.jp/~kamiken/bach/bach.html
oais
質問者

お礼

早速バッチファイルでやってみようと思います。ありがとうございました

  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.2

1.OSは何でしょうか? 2. >そこで現在は exeファイルを設定した順番通りに実行させるというフリーソフトを使っています。しかし、それは多くの不都合があるので改善したいです。 例えば、どのような不都合ですか?

oais
質問者

補足

1.windowsXPです。 2.まずわたしの扱うデータというのが非常に多くのファイルであり、その数は毎回変わります。また、それぞれのプログラムが順番どおりに実行されなければいけません。フリーソフトでは実行ファイルを順番に実行してくれるという機能及び、各実行ファイルの実行の間に指定した待機時間をあけてくれる機能があります。しかし、データの数によって処理時間が異なるためあらかじめ待機時間を決めることが出来ません。完成したシステムはできるだけ使いやすくしたいので データによって毎回待機時間を指定しなければいけないという点が大きな不都合です。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

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は、プログラムの実行終了を待つ指定です。 返値でエラーコードを得ることができますので、それによって実行を制御するようなこともできます。

oais
質問者

お礼

VBScriptは使ったことがないのですが バッチ処理以外のやり方として今後やってみようと思います。ありがとうございました

関連するQ&A

  • 【C++】外部プログラムを呼んで、そのプログラムから値を取得したい

    【C++】外部プログラムを呼んで、そのプログラムから値を取得したい 現在、windowsXp pro でVC2008コンパイラで 普通のC++のプログラムを組んでいます。 コマンドプロンプト上で、C++プログラム(aaa.exe)を実行し、 そのaaa.exeから別のC++プログラム(bbb.exe)に引数を渡して 実行しようと思います。 このとき、bbb.exeで処理したデータ(xxx)をaaa.exeに返したい のですが、どういう方法があるのでしょうか。 (例えば、aaa.exeからbbb.exeに4つのint型引数k,l,m,nを渡し、  bbb.exe内で、k+l, m-nを計算して、2つの計算結果を返したい  と思います。) (aaa.exe、bbb.exe間のデータ渡しにファイルを使わないという  条件でお願いします。) サンプルプログラムを提示して頂きたくお願いします。

  • Javaのプログラムから、C言語のプログラムを呼び出す方法

    こんばんわ。 もうすぐ2008年もおしまいですね。 本日お聞きしたいのは、タイトルの通り、 Javaで書いたプログラムで、C言語のプログラムを呼び出し、 実行するプログラムはどのように書いたらよいかということです。 実際に行いたい内容は以下の通りです。 ・JavaからC言語で書かれたNN.exeを呼び出し、実行する。 です。 どのようなプログラムで呼び出すことができるのでしょうか。 あまりプログラムの知識がなく、説明に不備がありましたらすいません。 お力添え、宜しくお願いいたします。

  • C#でのプログラム方法

    C#(コンソールでの実行ファイル)でのバッチファイル実行方法に悩んでいます。 実行イメージとして **************************************** 1. C#(A.exe)をダブルクリックで起動する 2. C#プログラム[A]はバッチファイルを起動する 3. C#(B.exe)をダブルクリックで起動する 4. C#プログラム[B]は2で起動したバッチファイルを終了させる(=DOS窓をCloseさせる?) **************************************** を考えています。 1~2の処理はなんとなくわかったのですが 4にてバッチファイルが起動しているDOS窓をどうCloseさせたらいいのかわかりません。 助けてください。

  • 複数のJavaプログラムでデータを共有する方法について

    レベルの低い質問だとは思うのですが、相談にのってください。 Javaでコンソールプログラムを作っています。 コマンドプロンプトを複数立ち上げ、同じJAVAプログラムを同時に実行します。(プログラムは同じですが、処理内容はそれぞれ異なります。並列な処理です。) これら複数のプログラム同士でデータ(処理の進捗状況など)を共有するにはどうすればいいでしょうか。(そもそもそんなことができるのでしょうか) 今考えているのは、共有データ用のテキストファイルを1つ作り、それを各プログラムが参照(読んだり書き込んだり)する、ということ考えています。しかし、これだと複数のプログラム同士が同時にファイルを読み書きするようなタイミングがあるかもしれず、思ったような動作をしないかもしれません。 そこで、質問です。 (1)今回のような場合(コマンドプロンプトを複数立ち上げ、同じJAVAプログラムを同時に実行)で、データ共有に使えそうなトピックや方法があれば、お教えください。ヒントでもなんでもいいです。(とりあえず、ちょっとした付け焼刃でなんとか動いてほしいので……) (2)「コマンドプロンプトを複数立ち上げ、同じJAVAプログラムを同時に実行」しているのは、単に私の技術が低いからです。今後プログラムを根本的に書き直して改良するために、今後どのようなJavaのトピックを勉強すればいいでしょうか。 乱文失礼いたしました。どうかよろしくお願いします。

  • OSがプログラムをどのように実行させているか

    現在、OSはどのようにプログラムを実行させるのかを調べています。Cプログラムを作り、そのCプログラムをコンパイルして生成されたexeファイルを実行させますが、この際に、OSはどのような事を行っているのでしょうか?概要でいいので、プログラムを実行させる際にOSの行っていることを教えてください。お願いします。

  • 外部プログラムを実行してそのプログラム中のキー入力を自動で行うにはどうしたらいいか?

    現在C++でプログラミングを組んでいるものです。 外部プログラムを実行させ、外部プログラム実行中に求められるキー入力を自動で行えないかと考察しているのですがわかりません。。。 外部プログラムといっているのは、現在C++で書いていて その中でsystemコマンドを使い他のexeを実行しているので。 求められるキー入力はDOS窓の画面で ------------------------------------ 上記の設定でよろしいでしょうか?> y ------------------------------------ 上記の『y』の箇所のみで『y』+Enterでその後の処理が走り出すというもので、毎回聞かれる『y』の入力を自動化したいのですが 何か方法は無いものでしょうか?? exeファイルしかなく修正もできないのでなんとか自動的に入力まで含められないかと考えてます。 みなさんどうぞよろしくお願いします。

  • 良いプログラムとは?

    はじめまして 自分はC++の基礎(入門的な)部分 構造体、ポインタ、関数、ファイル入力は 理解したのですが良いプログラム (処理時間、容量の短縮、見やすいプログラムなど) が分からないので (分かることがあるとすれば演算子の処理を少なく するとかポインタを使うとか・・^^;) こんな初心者にできれば具体的な 良いプログラムの基本的な書き方を 教えてください・・ 宜しくお願いします。

  • Javaでプログラムをコマンドから「プログラム名」だけで起動できる?

    普通はコンパイルしてtest.classファイルというファイルを作って >java test と、実行すると思うのですが、C言語でコンパイルした実行ファイルみたいに、Javaで作ったプログラムを >test みたいに実行する方法はあるでしょうか?

    • ベストアンサー
    • Java
  • 他の実行ファイルを実行するプログラム

    他の実行ファイルを実行するプログラムを作りたいです。 わかりにくいと思うので例を書いて説明します。 まずhello.cというプログラムがあったとします。 中身は -hello.c----------------- #include <stdio.h> main(){ printf("Hello!\n"); } -------------------------- これをコンパイルしてできた実行ファイルを他のプログラムから呼び出す?実行したいんです。 説明が下手ですいません(>_<) たとえば新しくexe.cというプログラムを作ります。 このexeを実行するとhello.exeが呼び出されて 結果的にhello.cの中身が実行されるような exe.cを作りたいです。 初歩的な質問ですいません。 どなたかアドバイスいただけないでしょうか(>_<)

  • Javaで作ったプログラムの実行方法

    Javaを勉強しているものです。 Javaで作ったプログラムを実行させる場合(テストなどではなくて)、Jarファイルにしてコマンドプロンプトから実行させるのが調べた中ではどうも一般的なようなのですが・・・。若しくはバッチファイルを作成して、そのアイコンをダブルクリックして実行など。 普通のソフトのように、アイコンをダブルクリックして実行できるような形にする方法はあるのでしょうか? ちなみに、作ったプログラムはCSV形式のデータを読み取る部分があり、実行時にそのファイルのありかを引数として与える必要があります。 ソフトを使えばEXEファイルに出来るようなのですが、そういったものを使用せずに出来る方法をご存知の方がいらっしゃいましたら、教えてください。

    • ベストアンサー
    • Java

専門家に質問してみよう