web-dev-qa-db-ja.com

C ++プログラムからLinuxで別のプログラムを実行する

さて、私の質問はこれです。単純なC++コードがあるとします。

#include <iostream>
using namespace std;

int main(){
   cout << "Hello World" << endl;
   return 0;
}

プログラムで実行したいこのプログラムがあるとしましょう。これをprogと呼びます。ターミナルでこれを実行するには、次の方法があります。

./prog

私の単純なC++プログラムからこれを行う方法はありますか?例えば

#include <iostream>
using namespace std;

int main(){
   ./prog ??
   cout << "Hello World" << endl;
   return 0;
}

フィードバックは非常に義務付けられます。

15
Vincent Russo

system()ライブラリ呼び出しが必要です。 system(3) を参照してください。例えば:

#include <cstdlib>

int main() {
   std::system("./prog");
   return 0;
}

もちろん、正確なコマンド文字列はシステムに依存します。

15
J. C. Salomon

Popenも使用できます

#include <stdio.h>

int main(void)
{
        FILE *handle = popen("./prog", "r");

        if (handle == NULL) {
                return 1;
        }

        char buf[64];
        size_t readn;
        while ((readn = fread(buf, 1, sizeof(buf), handle)) > 0) {
                fwrite(buf, 1, readn, stdout);
        }

        pclose(handle);

        return 0;
}
8
xda1001

試してください system(3)

system("./prog");
3

システムコマンドを使用できます。

system("./prog");
3
elimirks

次のようなシステムコールを使用できます: http://www.cplusplus.com/reference/clibrary/cstdlib/system/

ユーザー入力をパラメーターとして使用する場合は注意が必要です。これは、意図しない結果をもたらす良い方法です。すべてをこすります!

一般に、システムコールは悪い形式として解釈される可能性があります。

3
gmoney