[英]Implementation of ls Command in C
我目前正在參加系統編程課程,教授為我們提供了ls命令實現的示例代碼
#include <stdlib.h>
#include <sys/types.h>
#include <dirent.h>
#include <stdio.h>
int main (int argc, char *argv[]) {
DIR *dp;
struct dirent *dirp;
if(argc ==1) dp = opendir ("./");
else dp = opendir(argv[1]);
while ((dirp = readdir(dp)) != NULL) printf("%s\n", dirp->d_name);
closedir(dp);
exit(0);
}
但是,當我嘗試運行它時,它會輸出消息“ segmentation fault”。 這是我測試過的圖片,它是什么導致此消息的?
您使用./a.out Assignment1.c
調用程序。
然后,您的程序實際上執行了一個opendir("Assignment1.c");
。 因為"Assignment1.c"
是文件而不是目錄,所以opendir
返回NULL
。
您天真地執行dirp = readdir(dp)
,而dp
為NULL
,這會導致分段錯誤。
您應該測試opendir
的返回值,如果它為NULL
,則顯示一條錯誤消息。
閱讀opendir手冊頁 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.