Reputation: 1089
Okay so my question is this. Say I have a simple C++ code:
#include <iostream>
using namespace std;
int main(){
cout << "Hello World" << endl;
return 0;
}
Now say I have this program that I would like to run in my program, call it prog. Running this in the terminal could be done by:
./prog
Is there a way to just do this from my simple C++ program? For instance
#include <iostream>
using namespace std;
int main(){
./prog ??
cout << "Hello World" << endl;
return 0;
}
Any feedback would be very much obliged.
Upvotes: 21
Views: 49230
Reputation: 4313
You want the system()
library call; see system(3). For example:
#include <cstdlib>
int main() {
std::system("./prog");
return 0;
}
The exact command string will be system-dependent, of course.
Upvotes: 25
Reputation: 2459
You can also use 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;
}
Upvotes: 9
Reputation: 1264
You could use a system call like this: http://www.cplusplus.com/reference/clibrary/cstdlib/system/
Careful if you use user input as a parameter, its a good way to have some unintended consequences. Scrub everything!
Generally, system calls can be construed as bad form.
Upvotes: 2