⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 myls.c

📁 LINUX下FTP服务器需要的list。个人觉得还不错
💻 C
字号:
#include <stdio.h>#include <sys/stat.h>#include <sys/types.h>#include <dirent.h>#include <sys/time.h>#include <time.h>int main(int argc, char **argv){	struct stat sbuf;	mode_t mode;	char buf[1024];	DIR *dp;	struct dirent *link;	dp=opendir(".");	if (dp==NULL)	{		return -1;	}	while ((link=readdir(dp))!=0)	{		if (lstat(link->d_name, &sbuf)==-1)		{			continue;		}		if (strcmp(link->d_name, ".") == 0 || strcmp(link->d_name, "..") == 0)		{			continue;		}		mode=sbuf.st_mode;		char perms[] = "----------";		perms[0]='?';		switch (mode & S_IFMT)		{		case S_IFREG:			perms[0] = '-';			break;		case S_IFDIR:			perms[0] = 'd';			break;		case S_IFLNK:			perms[0] = 'l';			break;		case S_IFIFO:			perms[0] = 'p';			break;		case S_IFSOCK:			perms[0] = 's';			break;		case S_IFCHR:			perms[0] = 'c';			break;		case S_IFBLK:			perms[0] = 'b';			break;		}		if (S_IRUSR  &  mode)			perms[1] = 'r';		if (S_IWUSR  & mode)			perms[2] = 'w';		if (mode & S_IXUSR)			perms[3] = 'x';		if (mode & S_IRGRP)			perms[4] = 'r';		if (mode & S_IWGRP)			perms[5] = 'w';		if (mode & S_IXGRP)			perms[6] = 'x';		if (mode & S_IROTH)			perms[7] = 'r';		if (mode & S_IWOTH)			perms[8] = 'w';		if (mode & S_IXOTH)			perms[9] = 'x';		perms[10] = '\0';		int off=0;		memset(buf,0,sizeof(buf));		off += sprintf(buf+off, "%s ",perms);		off += sprintf (buf + off, " %3d %-8d %-8d ",sbuf.st_nlink, sbuf.st_uid, sbuf.st_gid);		off+=sprintf(buf + off, "%8lu ", (unsigned long)sbuf.st_size);		char* p_date_format = "%b %e %H:%M";		char datebuf[13]={0};		struct tm* p_tm;		//struct timeval tv;		//long local_time;		//gettimeofday(&tv,NULL);		//local_time = tv.tv_sec;				p_tm = localtime(&sbuf.st_mtime);	/*if (sbuf.st_mtime > local_time ||			(local_time - sbuf.st_mtime) > 60*60*24*182)		{			p_date_format = "%b %e  %Y";		}		*/				strftime(datebuf, sizeof(datebuf), p_date_format, p_tm);		off += sprintf (buf + off, "%s ", datebuf);		if (S_ISLNK(sbuf.st_mode))		{			char tmp[1024]={0};			readlink(link->d_name,tmp,sizeof(tmp));			off += sprintf (buf + off, "%s -> %s", link->d_name,tmp);		}		else		{			off += sprintf (buf + off, "%s", link->d_name);		}		off += sprintf (buf + off, "%s", "\r\n");		printf("%s",buf);	}	closedir(dp);	return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -