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