ページ 1 / 1
プログラムの呼び出し
Posted: 2006年12月15日(金) 18:02
by satoshi
こんにちは。
今、メインのプログラムで別のプログラムを呼び出して実行させたいんですケド、全然わかりません。
誰かわかる人がいたらご教授お願いします。
ちなみにC++です。
Re:プログラムの呼び出し
Posted: 2006年12月15日(金) 19:34
by 管理人
別のプログラムを呼び出すっていうのはほかの実行ファイルを実行させたいってことでいいんですか?
それでしたらシステム関数を使えばいいと思います。
Re:プログラムの呼び出し
Posted: 2006年12月17日(日) 13:28
by satoshi
はじめまして、管理人さん。返答が遅れてしまい申し訳ありません。
まさに、実行ファイルを実行させたいんですが実行ファイルからデータも欲しいんです。
Win32アプリケーションで作成したGUIに、Win32コンソールアプリケーションで作成したsocketプログラミングで受け取ったデータを出力したいんです。
こんなことってシステム関数で出来るんですか?
また、その関数を教えてもらえれば幸いです。システム関数で調べてみたんですが見当たらなくて‥
よろしくお願いします。
Re:プログラムの呼び出し
Posted: 2006年12月17日(日) 13:53
by box
> こんなことってシステム関数で出来るんですか?
systemという名前の標準関数のことだと思います。
この関数で今回の希望が満たせるかどうかはわかりませんが…。
Re:プログラムの呼び出し
Posted: 2006年12月17日(日) 16:42
by Justy
アプリから別のアプリを呼ぶC言語標準関数は sysytem()ですが、各OS毎に専用の APIが用意されていることがありますので、そのどちらかを使ってみて下さい。
で、データのやりとりは、同じマシン上にある2つのアプリ間というなら「プロセス間通信」でぐぐればいろいろと出てくるかと。
まぁ最悪、ファイルに書き出してそれを読みとる、という方法でも出来なくはないです。
状況がよくわかりませんが、そのコンソールアプリ内にある受信したデータを受け取る部分を dll/共有ライブラリ化して、GUI側からも呼べるようにしてはどうですか?
その方が楽なのでは。
Re:プログラムの呼び出し
Posted: 2006年12月17日(日) 17:51
by satoshi
boxさん、Justyさん、ご返答ありがとうございます。
>Justyさん
>で、データのやりとりは、同じマシン上にある2つのアプリ間というなら「プロセス間通信」でぐぐればいろいろと出てくるかと。
プロセス間通信はやってみたのですが、いまいち使い方がよくわからなくて…
>そのコンソールアプリ内にある受信したデータを受け取る部分を dll/共有ライブラリ化して、GUI側からも呼べるようにしてはどうですか?
そんな方法があるんですね。無知ですみません。
そのやり方を詳しく書いてるところなどを知っていたら教えて下さい。
よろしくお願いします。
Re:プログラムの呼び出し
Posted: 2006年12月18日(月) 13:22
by satoshi
すみません。system関数を利用して、実行しようとしたんですが、うまく実行されません。
system(" \"C:\Program1\\client\\debug\\client.exe\" ");
このようにして記述しているのですが、間違った記述ですか?
ちなみに、コンパイル時の警告で「エスケープシーケンスとして正しく認識されませんでした。」と出ます。
どなたかわかる人がいたらご教授ください。
Re:プログラムの呼び出し
Posted: 2006年12月18日(月) 14:47
by keichan
\"C:\\Program1\\Client\\debug\\client.exe\"
としてみてください。
Re:プログラムの呼び出し
Posted: 2006年12月18日(月) 15:16
by satoshi
keichanさん回答ありがとうございます。
実行することができました。ありがとうございます。
ところで、system()関数では実行ファイルを実行するだけでデータの受け渡しができませんよね?
Justyさんが仰られたようにdllを作成して呼び出せるようにしようとしているのですが、私には難しいです…
なんとか頑張ってみます。
やって出来なかったらまた質問させてもらいます。
みなさんご回答ありがとうございました。
Re:プログラムの呼び出し
Posted: 2006年12月18日(月) 15:42
by Yuki
socketプログラミングで受け取ったデータをファイルに出力するようにして、
起動側ではsystem()関数終了後、そのファイルを読んでデータをGetする
という仕組みではいけませんか?