2016-04-10 2 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); 

Самое странное в том, что, когда я использую один и тот же код, но заменить «PS» с «/ Proc/MemInfo» или другими файлами, то это будет правильно выход. Заранее спасибо за помощь.

+1

Ну, это 'fopen' успех или провал? Почему бы вам не протестировать? – usr2564301

+0

У вас есть файл под названием 'ps'? – Joni

+1

'ps' - это не файл, это команда. По крайней мере, это верно, основываясь на том, как вы хотите его использовать. –

ответ

3

Попробуйте использовать popen и pclose для выполнения команды, а не Еореп и fclose

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

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

pclose(ps); 
Смежные вопросы