簡體   English   中英

在C中執行ls命令

[英]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) ,而dpNULL ,這會導致分段錯誤。

您應該測試opendir的返回值,如果它為NULL ,則顯示一條錯誤消息。

閱讀opendir手冊頁

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM