2016-04-10 14 views
0

Linuxシステムで実行中のプロセスを印刷しようとしていますが、しようとするとセグメンテーションフォルトが発生します。ここに私のコードは次のとおりです。linuxでファイルを開くときに問題が発生しました

FILE *ps; 
char line[256]; 
char * command = "ps"; 
ps = fopen(command, "r"); 
if(ps == NULL){ 
    perror("Error"); 
} 
while(fgets(line, sizeof(line), ps)){ 
    printf("%s", line); 
} 
fclose(ps); 

奇妙なことは、私は同じコードを使用しますが、「/ procの/ meminfoの」または他のファイルと「PS」を交換するとき、それは正しく出力するであろうということです。助けを前にありがとう。いうよりはfopenコマンドを実行するためのpopenとpcloseを使用する

+1

まあのfcloseは、 'fopen'成功するか失敗するのか?なぜあなたはテストしないのですか? – usr2564301

+0

'ps'というファイルがありますか? – Joni

+1

'ps'はファイルではなく、コマンドです。少なくともそれはあなたがそれを使いたい方法に基づいて真実です。 –

答えて

3

試してみて、

char line[256]; 
FILE *ps = popen("ps", "r"); 
if(ps == NULL){ 
    perror("Error"); 
} 

while(fgets(line, sizeof(line), ps)){ 
    printf("%s", line); 
} 

pclose(ps); 
関連する問題