Запустите другую программу в Linux из программы на C++

Итак, мой вопрос таков. Скажем, у меня есть простой код на 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;
}

любая обратная связь была бы очень признательна.

5 ответов


вы хотите system() вызов библиотеки; см. система(3). Например:

#include <cstdlib>

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

точная строка команды будет зависеть от системы, конечно.


вы также можете использовать 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;
}

попробовать


вы можете использовать системный вызов, как это: http://www.cplusplus.com/reference/clibrary/cstdlib/system/

осторожно, если вы используете пользовательский ввод в качестве параметра, это хороший способ иметь некоторые непреднамеренные последствия. Скраб все!

Как правило, системные вызовы могут быть расценены как дурной тон.


вы могли бы нам командной системы:

system("./prog");