2011-01-21 20 views
14

Próbuję wykonać polecenie systemu Linux w programie c przy użyciu systemowego wywołania systemowego, ale nie chcę, aby zrzucić dzienniki wyjściowe lub błędy na terminalu. Co powinienem zrobić? Czy jest jakiś inny sposób na zrobienie tego?Wykonywanie polecenia systemu Linux w programie c

Odpowiedz

23

Ponieważ wywołanie system() używa powłoki do wykonania polecenia, możesz przekierować standardowe wyjście i stderr do/dev/null, np.

system("ls -lh >/dev/null 2>&1"); 
+5

+1, dodając dodatkowy ')' jest ćwiczeniem w lewo dla czytelnika :) –

3

Pokaż kod.

Spróbuj np

System ("ls");

11

popen to kolejny sposób, w którym można zrobić to samo:

void get_popen() 
    FILE *pf; 
    char command[20]; 
    char data[512]; 

    // Execute a process listing 
    sprintf(command, "ps aux wwwf"); 

    // Setup our pipe for reading and execute our command. 
    pf = popen(command,"r"); 

    // Error handling 

    // Get the data from the process execution 
    fgets(data, 512 , pf); 

    // the data is now in 'data' 

    if (pclose(pf) != 0) 
     fprintf(stderr," Error: Failed to close command stream \n"); 

    return; 
} 
+0

przeciwieństwie do innych odpowiedzi, to jeden pozwala również uzyskać wyjście programu. –

Powiązane problemy