ο κώδικας που έχω γραψει είναι ο εξής:
Code: Select all
#include<stdio.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
int getsize(char *);
int numberoflinks(char *);
int mode(char *);
int userid(char *);
int groupid(char *);//
struct stat attrib;
main(int argc,char *argv[]) {
struct stat attrib;
argv[1]=”ls”;
argv[2]=”-l”;
if (argc!=4)
{
printf(“lathos arithmos orismaton\n”);
exit(1);
}
if(argv[1]!=”ls”)
printf(“lathos entoli”);
exit(2);
}
if(argv[2]!=”-l”)
printf(“lathos entoli”);
exit(3);
}
if (stat(argv[1],&attrib) == -1)
{
printf(“error stat\n”);
exit(4);
}
printf(“%d ”,getsize(argv[3]));
printf(“%s ”,argv[3]);
printf(“%d ”,numberoflinks(argv[3]));
printf(“%d ”,mode(argv[3]));
printf(“%d ”,userid(argv[3]));
printf(“%d ”,groupid(argv[3]));
if(S_ISBLK(attrib.st_mode))
printf(“block special file\n”);
else if(S_ISCHR(attrib.st_mode))
printf(“character special file\n”);
else if(S_ISFIFO(attrib.st_mode))
printf(“fifo or pipe\n”);
else if(S_ISDIR(attrib.st_mode))
printf(“directory\n”);
else if(S_ISREG(attrib.st_mode))
printf(“regular file\n”);
}
int getsize(char *filename)
{
struct stat attrib;
stat(filename,&attrib);
return attrib.st_size);
}
int numberoflinks(char *filename)
{
struct stat attrib;
stat(filename,&attrib);
return attrib.st_nlink);
}
struct stat attrib;
stat(filename,&attrib);
return attrib.st_mode);
}
int userid(char *filename)
{
int mode(char *filename)
{
struct stat attrib;
stat(filename,&attrib);
return attrib.st_mode);
}
int userid(char *filename)
{
struct stat attrib;
stat(filename,&attrib);
return attrib.st_uid);
}
int groupid(char *filename)
{
struct stat attrib;
stat(filename,&attrib);
return attrib.st_gid);
}