Run Another Program in Linux from a C++ Program
Solution 1
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.
Solution 2
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;
}
Solution 3
You could us the system command:
system("./prog");
Solution 4
Try system(3) :
system("./prog");
Solution 5
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.
Vincent Russo
http://vprusso.github.io/ https://www.youtube.com/captainhampton
Updated on July 09, 2022Comments
-
Vincent Russo almost 2 years
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.
-
Captain Giraffe over 12 yearsIn <cstdlib>. And maybe slap an std:: on that system.
-
Gil404 about 6 yearsHow can I get the pid of the new proc?
-
J. C. Salomon about 6 years@Gil404: PID is a Unix concept and not all OSes have it. If you need that, use the POSIX
fork
andexec
, or your operating system’s equivalent.