Запустите другую программу в 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/
осторожно, если вы используете пользовательский ввод в качестве параметра, это хороший способ иметь некоторые непреднамеренные последствия. Скраб все!
Как правило, системные вызовы могут быть расценены как дурной тон.