请补全下列代码使其功能完整:#includesystypesh#includesysstath#includeunistdh#includestdioh#includestringh#includedirenthino_t get_inodechar fname struct stat info; ifstatfname &info == -1 printfcannot stat; exit
补全代码如下:
#include<sys/types.h> #include<sys/stat.h> #include<unistd.h>
#include<stdio.h> #include<string.h> #include<dirent.h> #include<stdlib.h>
ino_t get_inode(char *fname){ struct stat info;
if(stat(fname, &info) == -1){
printf("cannot stat");
exit(1);
}
return info.st_ino;
}
void inum_to_name(ino_t inode_to_find, char* name, int buflen) { DIR* dir_ptr; struct dirent* direntp;
dir_ptr = opendir("."); // 打开当前目录
if(dir_ptr ==NULL){
printf("error in opendir");
exit(1);
}
while( (direntp=readdir(dir_ptr))!=NULL){
if(direntp->d_ino == inode_to_find){
strncpy(name, direntp->d_name, buflen);
name[buflen-1]='\0';
closedir(dir_ptr);
return;
}
}
printf("error in looking for inum %ld\n", inode_to_find);
exit(1);
}
int main(int argc, char* argv[])
{
char name[30];
inum_to_name(get_inode(argv[1]), name, 30);
printf("name=%s\n", name);
return 0;
原文地址: https://www.cveoy.top/t/topic/fbEH 著作权归作者所有。请勿转载和采集!