无法在linux中打开文件

时间:2016-04-10 17:39:26

标签: c linux fgets

我正在尝试在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”时,它将正确输出。在此先感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

尝试使用popen和pclose来运行命令而不是fopen和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);