Vincent Russo
Vincent Russo

Reputation: 1089

Run Another Program in Linux from a C++ Program

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

Answers (5)

J. C. Salomon
J. C. Salomon

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

elimirks
elimirks

Reputation: 1472

You could us the system command:

system("./prog");

Upvotes: 5

xda1001
xda1001

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

gmoney
gmoney

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

James M
James M

Reputation: 16718

Try system(3) :

system("./prog");

Upvotes: 4

Related Questions