1
我試圖創建一個方法,將執行一些系統調用。它應該顯示每個文件的所有者和八進制代碼。但不知何故,我不能走。它顯示的用戶名登錄,因爲每個文件的所有者列出目錄並顯示每個文件的詳細信息。所有者,八進制權限和文件名使用c
listContents(char * dir) {
struct dirent *direntp;
DIR *dirp;
if ((dirp = opendir(dir)) == NULL)
{
perror ("Failed to open directory");
return 1;
}
while((direntp=readdir(dirp))!=NULL) {
struct stat fileInfo;
if (stat(direntp->d_name, &fileInfo) == 0);
{
struct passwd * pInfo = getpwuid(fileInfo.st_uid);
if(pInfo!=NULL)
{
printf("owner is : %s\toctal permisions is: %o\n", pInfo->pw_name, fileInfo.st_mode);
}
}
}
while ((closedir(dirp) == -1) && (errno == EINTR)) ;
return 0;
}
我試着修復縮進給你,但完全失去了。請自己糾正。 – 2015-02-10 21:14:20
它不正確的所有者。但我認爲你需要寫'fileInfo.st_mode&0777'而不是'fileInfo.st_mode'來顯示權限。 – 2015-02-10 21:21:00
潛在的無限循環while((closedir(dirp)== -1)&&(errno == EINTR));'簡單地使用'closedir(dirp);' – chux 2015-02-10 22:16:42