2012-02-02 4 views
9

OK, więc moje pytanie jest takie. Że mam proste C++ kod:Uruchom inny program w systemie Linux z programu C++.

#include <iostream> 
using namespace std; 

int main(){ 
    cout << "Hello World" << endl; 
    return 0; 
} 

teraz powiedzieć mam ten program, który chciałbym uruchomić w moim programie, nazwać prog. Uruchomienie tego w terminalu może być wykonane przez:

./prog 

Czy istnieje sposób, aby to zrobić z mojego prostego programu C++? Na przykład:

#include <iostream> 
using namespace std; 

int main(){ 
    ./prog ?? 
    cout << "Hello World" << endl; 
    return 0; 
} 

Wszelkie informacje zwrotne byłyby bardzo zobowiązujące.

+1

możliwy duplikat http://stackoverflow.com/questions/478898/how-to-execute-a-command-and-get-output-of-command- wewnątrz-c – hopia

+1

@hopia, nie duplikat. Wskazałeś na pytanie o zaawansowane zastosowania 'system()'; ten plakat wystarczy wiedzieć o istnieniu funkcji. –

Odpowiedz

13

Chcesz wywołać bibliotekę system(); patrz system(3). Na przykład:

#include <cstdlib> 

int main() { 
    std::system("./prog"); 
    return 0; 
} 

Dokładny ciąg poleceń będzie oczywiście zależny od systemu.

3

Spróbuj system(3):

system("./prog"); 
+0

W . A może uderzyć std :: w ten system. –

3

Mógłbyś nam komendę systemową:

system("./prog"); 
8

Można również użyć 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; 
}