2011-01-21 6 views
14

システムコールを使用してcプログラムでLinuxコマンドを実行しようとしていますが、出力ログまたはエラーログをターミナルにダンプしたくありません。私は何をすべきか?これを行う他の方法はありますか?cプログラムでLinuxコマンドを実行

答えて

23

システムコールでシェルを使用してコマンドを実行すると、stdoutとstderrを/ dev/nullにリダイレクトできます。

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

1、) '追加の追加;'、他の回答とは異なり、読者:) –

3

コードを表示します。例えば

試行:

システム( "LS")。

11

popenのは、あなたが同じことを行うことが可能な別の方法である:

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

ために、この1を左に運動ですまた、プログラムの出力を得ることができます。 –

関連する問題