Run Another Program in Linux from a C++ Program

41,076

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.

Share:
41,076
Vincent Russo
Author by

Vincent Russo

http://vprusso.github.io/ https://www.youtube.com/captainhampton

Updated on July 09, 2022

Comments

  • Vincent Russo
    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
    Captain Giraffe over 12 years
    In <cstdlib>. And maybe slap an std:: on that system.
  • Gil404
    Gil404 about 6 years
    How can I get the pid of the new proc?
  • J. C. Salomon
    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 and exec, or your operating system’s equivalent.