2011-08-17 13 views
-1

system("stat -f %g /dev/console")で与えられた数値を変数(Xを使ってCで動作)に入れたいと思います。これはどのようにして最高の成果を上げましたかC言語のsystem()の出力を取得

struct stat file_details; 
stat("/dev/console", &file_details); 
printf("group id : %ld\n", (long) file_details.st_gid); 
+0

あなたはstatコマンドからの戻り値またはstatコマンドで表示される値(ファイルシステムのグループID)の後にありますか?私はそれが後者であると思われます。その場合は、statコマンドの出力をキャプチャして解析するか、fstat、lstat、stat unixライブラリ関数を使用して直接情報を取得する必要があります。 – Jackson

答えて

3

は、私はむしろstat機能を使用すると思います。例えば。

#include <stdio.h> 

int main(void) 
{ 
    int id = -1; 
    FILE *fp = popen("stat -f %g /dev/console", "r"); 

    if (fp != NULL) 
    { 
     fscanf(fp, "%d", &id); 
     pclose(fp); 
    } 

    printf("id = %d\n", id); 

    return 0; 
} 
+0

これはまさに私が欲しいものです。xx x x –

0
int variable; 
variable = system("stat-f %g /dev/console"); 
+0

-1:これはちょうどコマンドの戻りステータスで、出力ではありません。 –

+0

私の答えは、質問された(正確には編集される前の)**答えでした。質問が正しく聞かれなかった場合、それは私のせいではありません。プログラムの出力ではなく**戻り値**を求められました。 – Constantinius

+0

元の質問は、 "返信"とは多少あいまいだと言っていましたが、少なくとも2人は質問の本当の意味を見分けて賢明な答えを出すことができたので、少しの推論を適用してあいまいさを解消することは明らかです。 –

-1
#include<stdlib.h> 

... 

int return_value = system("stat-f %g /dev/console"); 
+0

-1:これは、出力ではなく、コマンドの戻りステータスを取得します。 –

+0

「システム(stat-f%g/dev/console)によって与えられた番号」の戻りステータスはありませんか?それ以外の意味は?なぜあなたは私の答えを落としたのですか? – Giorgio

+0

OPはstdoutに返される値を必要とします。その戻り状態ではない。 0. –

0

あなたはコマンドの出力をキャプチャしたい場合はpopenではなくsystemを使用する必要があります。

関連する問題