用C语言实现linux下的ls -l命令。与文件相关的结构体、函数等等知识请看"stat结构体以及文件相关函数"
#include <stdio.h>
#include <sys/types.h>
#include <dirent.h>
#include <sys/stat.h>
#include <string.h>
#include <unistd.h>
#include <pwd.h>
#include <grp.h>
void do_ls(char *dirname);
void dostat(char *filename);
void show_file_info(char *filename, struct stat *info_p);
void mode_to_letters(int mode, char * str);
char *uid_to_name(uid_t uid);
char *gid_to_name(gid_t gid);
int main(int argc, char **argv)
{
if (argc == 1)
{
do_ls( "." );
}
else
{
while ( --argc )
{
printf("%s:\n", *++argv );
chdir(*argv); //切换到指定目录后再显示该目录的内容
do_ls( *argv );
chdir(""); //再回到当前工作目录来
}
}
return 0;
}
void do_ls( char * dirname )
{
DIR *dir_ptr