【C++】外部プログラムを呼んで、そのプログラムから値を取得する方法

このQ&Aのポイント
  • 現在、Windows XP ProでVC2008コンパイラを使用して普通のC++プログラムを作成しています。コマンドプロンプト上で、C++プログラム(aaa.exe)を実行し、そのaaa.exeから別のC++プログラム(bbb.exe)に引数を渡して実行しようとしています。条件として、aaa.exeからbbb.exeに4つのint型引数k,l,m,nを渡し、bbb.exe内でk+l、m-nを計算して2つの計算結果をaaa.exeに返す方法を教えてください。
  • Windows XP ProのVC2008コンパイラを使用している場合、コマンドプロンプト上でC++プログラムを実行し、そのプログラムから別のC++プログラムに引数を渡す方法を知りたいです。具体的には、aaa.exeからbbb.exeに4つのint型引数k,l,m,nを渡し、bbb.exe内でk+l、m-nを計算して2つの計算結果をaaa.exeに返す方法を教えてください。
  • Windows XP ProでVC2008コンパイラを使用している場合のC++プログラムにおいて、コマンドプロンプト上でaaa.exeというプログラムを実行し、そのプログラムからbbb.exeに引数を渡して実行する方法を教えてください。具体的には、aaa.exeからbbb.exeに4つのint型引数k,l,m,nを渡し、bbb.exe内でk+l、m-nを計算し、その計算結果をaaa.exeに返す方法を教えてください。条件として、データ渡しにファイルを使用しない方法を教えてください。
回答を見る
  • ベストアンサー

【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間のデータ渡しにファイルを使わないという  条件でお願いします。) サンプルプログラムを提示して頂きたくお願いします。

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

  • ベストアンサー
  • titokani
  • ベストアンサー率19% (341/1726)
回答No.1
yuki7091
質問者

お礼

データ量が大きいので 共有メモリを採用使用と思います。 ご回答、有難うございました。

yuki7091
質問者

補足

ご回答、有難うございます。 _popenでできました。 ほかに方法はありませんか?

関連するQ&A

  • C++ リソースファイルの使い方について

    うまく説明できていないかもしれませんが AAA.exeとBBB.exeとBBB.exeを実行するために必要なファイル(以後 CCC.dll)があり、 AAA.exeの中にBBB.exeとCCC.dllを埋め込み AAAexeを実行時にCCC.dllをsystem32フォルダの中に置き、その後BBB.exeを実行させたいのですが、埋め込んだファイルの抽出方法が見つかりません。 どなたか、抽出ソースの書き方、またはよいサイトをご存じでしたら教えていただけないでしょうか?

  • エクセルから 外部プログラムを起こす

    WIN8 の ディスクトップアイコンの プロパティーの記述が 以下の通りですが "C:\Program Files (x86)\MarketSpeed\MLauncher\MLauncher.exe" RSS これを、エクセルから起こしたいのですが、上手くゆきません。 rc = Shell("c:\Program Files (x86)\MarketSpeed\MLauncher\MLauncher.exe", vbMinimizedNoFocus, "RSS") RSS,EXE が ホルダーは変わりますが 存在します。これが、引数だと思うのですが エラーが出ます。引数が不一致、もしくは不正なプロパティー が出ます。 ところが、このRSSコマンドもいい加減というか ダイレクトに叩いて起動かけることも出来る様で、その利用プログラムに不自由は出ないのです じゃあ f = "c:\Program Files (x86)\MarketSpeed\MarketSpeed\RSS.exe" Shell f, vbHide  でも 同じようなエラーが出ます。 RSSを 引数にする方法が間違っているのかもしれません。 何か お気づきの点があれば よろしくどうぞ

  • phpで外部プログラムを動かす

    初心者です。基礎的なことですが教えてください。 C言語で書いたプログラムをWebサービスで使いたいと思っています。 C単体でのプログラムをサーバ側で動かしますが、Webと連動させ、Web上のフォーマット から入力した情報をphpで経由し、サーバ側のCプログラムで処理する為に、データを渡し 起動し、結果をまたWeb上に返します。 その場合の phpでデータをCに渡し、プログラムを起動して、結果をCから貰い、Web上に 返すためのやり方を教えて下さい。どんなコーディング、関数になるのでしょうか。 またWebサーバの場合はCのコンパイラは通常どんなコンパイラを使用すれば良いの でしょうか。どんなレンタルサーバ会社でも問題ないのでしょうか。 初心者なので、よろしくお願いします

    • 締切済み
    • PHP
  • C++のプログラムをWindows上で呼び出す

    C++のプログラムをmakefileによってコンパイルし,make ooo.exe makefileと入力することにより実行結果がコマンドプロンプトに表示できました。(コンパイラはBCC)この実行結果をWindows上で呼び出し,テキストボックスに表示したいのですが,どのようにしたらよいのか全く分かりません。どなたかお暇であればおこたえいただけると嬉しいです。学生の身分で,知識も浅く文章等に乱れがあるかと思いますが,不明な点は質問して下さったら幸いです。皆様よろしくお願いします。

  • C#でthisポインタのような感じで渡したい

    こんにちは。 C#で以下のようなことをしようとしましたら 「error CS1605: 読み取り専用なので 'this' は ref または out 引数として渡せません」 とエラーが返されてしまいました。 C++ではthisポインタを渡すことができますが、C#で似たようなことをするには どのようにすればよろしいのでしようか? public class AAA {   public AAA( ref BBB a )   {   } } public class BBB {   public BBB()   {     AAA aaa = new AAA( ref this ) ;   } }

  • (汎用的に)行列の積を求めるプログラム

    L*M実行列A , M*N実行列B , M*N実行列C を引数として、A*BをCに代入するプログラムを作りたいと思っています。 具体的には、エラーがでるのはわかっていますがイメージとして void multiply(int L,int M,int N,double A[L][M],double B[M][N],double C[L][N]) {       for(int l=0;l<L;l++)    for(int n=0;n<N;n++)    C[l][n]=0;       for(int l=0;l<L;l++){            for(int m=0;m<M;m++){                   for(int n=0;n<N;n++)       C[l][n]+=A[l][m]*B[m][n];            }      } } という感じです。Cを自分なりに学習したところ、「2次元配列を渡すには行or列数が少なくとも既知でないといけない」のは知識として得ているのですが、ではこの問題を回避して所望のプログラムを書け、と言われると行き詰ってしまいました。 卒論をするにあたり、種々のサイズの行列演算が必要なので、できるだけ効率的な関数を書いておきたいのですが、どうすれば一般の行列の積の演算が可能になるのでしょうか?

  • CreateFile が ERROR_PATH_NOT_FOUND のエラーになる

    VC++を使っています。OSは Windows2000 です。 CreateFile で指定するファイル名をフルパスで指定し、EXEを同じ ディレクトリに置いて実行したところエラーとなり、詳細コードが ERROR_PATH_NOT_FOUND でした。 プログラムは以下のようになっています。 #define AAA "c:winnt\\system32\\AAA.log" hOpen = CreateFile( AAA, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); 上記プログラムの AAA.exe を system32下に置いて実行すると、 パスが不正だと怒られてしまいます。。。 AAA.exe を別ディレクトリで実行すると、sysytem32下にちゃんと ファイルが作成されます。 AAA.exe を CreateProcess する BBB.exe を造って試しましたが、 やはり BBB.exe が system32下にあると駄目でした。 どうやらカレントディレクトリが同じだと駄目みたいです。 「"AAA.log"」とせずにフルパスとしているのは以下の理由のためです。 ・ファイルは必ず system32下に作成したい。 ・AAA.exe は必ず system32下にある。 しかし、BBB.exe が必ず system32下にあるとは限らないため、 「"AAA.log"」とした場合、BBB.exe を実行したディレクトリに 作成されてしまう。 CreateFile には今回のような制限があるのでしょうか??? #ヘルプを見る限り、書いてないです。。。

  • メール本文からの引数付の実行ファイルの起動方法

    こんにちは。 メールの本文に http://okwave.jp とあれば、ここをクリックすれば、ブラウザが開いてページが 表示されますよね。 これと同じ方法で、メール本文から引数付のアプリを起動させたいのです。 file://aaa.exe のように引数なしでは起動するのですが、 file://aaa.exe bbb のように引数をつけると ファイル "aaa.exe bbb" が見つかりません。パスまたはインターネットアドレスが正しいことを確認してください。 のようになってしまいます。 よろしくお願いいたします。

  • Cプログラムの問題

    簡単なCプログラムを作ったのですが、理解できない作動をしますので、教えて頂ければ幸いです。プログラムは int main(){ int i,j,k,n,m; double d,r; double data[300],distance[300][300]; FILE *fp; fp = fopen("data.rtf", "r"); fscanf(fp, "%d", &n); for(i=0;i<n;++i){ fscanf(fp, "%lf", &data[i]); } fclose(fp); のようなもので、data.rtfには 4 0.4 0.2 . . のようなデータが入っています。こうすると、data[0]に0.4が入ることを期待していたのですが、data[0]は0.0となり、data[1]に0.4が入りました。これはなぜなのでしょうか。

  • Cシェルでのファイル編集について

    Cシェルについて、すみませんが教えてください。。 AAA,BBB,1 1,data1,0000 2,data2,0000 3,data3,0000 4,data4,0000 ・・・ CCC,15,2,13 上記のようなヘッダ1行+データN(ここでは13行とする)行+トレイラ1行で 構成されているファイルがあり、このヘッダとトレイラを以下のようなファイル に加工するプログラムをCシェルで作成したいのですが、全く見当がつきません。 AAA,BBB,00001 1,data1,0000 2,data2,0000 3,data3,0000 4,data4,0000 ・・・ CCC,00015,00002,00013 ※ヘッダの3項目めを5桁になるように左0埋め ※トレイラの2項目めを5桁になるように左0埋め ※トレイラの3項目めを5桁になるように左0埋め ※トレイラの4項目めを5桁になるように左0埋め どなたか教えてください。よろしくお願いいたします。