2016-04-10 103 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」,使其能正確輸出。先謝謝您的幫助。

+1

好了,不'fopen'成功還是失敗?你爲什麼不測試? – usr2564301

+0

你有一個名爲'ps'的文件嗎? – Joni

+1

'ps'不是一個文件,它是一個命令。至少這是基於你想使用它的方式。 –

回答

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);