最近学linux下C编程,学到文件方面,编写了一个模仿命令ls的C语言程序,先贴代码
#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<dirent.h>
#include<unistd.h>
#include<stdlib.h>
#include<string.h>
void printmode(mode_t modes)
{
int i=0;
char descrip[11];
static short octarray[9]={0400,0200,0100,0040,0020,0010,0004,0002,0001};
static char perms[10]="rwxrwxrwx";
if(S_ISREG(modes)) descrip[0]='-'; //Add file type
else if(S_ISDIR(modes)) descrip[0]='d';
else
{
printf("\nUnknown mode\n");
return;
}
for(i=1;i<10;i++)
{
if(modes&octarray[i-1])
descrip[i]=perms[i-1];
else
descrip[i]='-';
}
for(i=0;i<10;i++)
{
printf("%c",descrip[i]);
}
printf(" ");
}
void printdir(char path[])
{
DIR *dir;
struct dirent *entry;
struct stat statbuff;
mode_t modes;
printf("The working directory is %s \n",path);
if((dir=opendir(path)) == NULL)
{
fprintf(stderr,"Can

本文介绍了作者在学习Linux下C编程时,尝试模仿ls命令的实践过程。通过使用数组存储权限掩码,实现了对文件信息的显示,代码以八进制形式呈现。
最低0.47元/天 解锁文章
979

被折叠的 条评论
为什么被折叠?



