我基本上必須爲一個類編寫一個UNIX ls命令的克隆,而且幾乎所有的工作都已經完成。我似乎無法弄清楚如何做的一件事是檢查文件是否是符號鏈接。從的man頁面,我看到有一個mode_t
定義的值,S_IFLNK
。你如何確定使用stat()文件是否是符號鏈接?
這是我正在努力檢查文件是否是一個符號鏈接,沒有運氣(注意,stbuf是stat()
返回的i節點的數據到緩衝區):
switch(stbuf.st_mode & S_IFMT){
case S_IFLNK:
printf("this is a link\n");
break;
case S_IFREG:
printf("this is not a link\n");
break;
}
我的代碼總是打印this is not a link
,即使它是,我知道一個事實,該文件是一個符號鏈接,因爲實際的ls命令說,所以,我創建了sym鏈接...
任何人都可以發現我可能會做錯了嗎?謝謝您的幫助!
引用我的stat(2)手冊頁:lstat()與stat()完全相同,只是如果path是一個符號鏈接,那麼鏈接本身是stat- ed的,而不是它引用的文件。 – Philip 2010-04-14 23:20:02