πρόγραμμα σε C
Posted: Fri Nov 16, 2007 4:38 pm
Γεια σας εχω μια εργασια με θέμα: Γράψτε ένα πρόγραμμα σε C που να προσομοιώνει την εντολή ls όταν αυτή εκτελείται με την παράμετρο -l. Το πρόγραμμά σας, όταν εκτελείται χωρίς ορίσματα, θα πρέπει να εμφανίζει τις πληροφορίες για όλα τα αρχεία του τρέχοντος καταλόγου. Εναλλακτικά, αν λάβει σαν όρισμα το όνομα ενός αρχείου, να εμφανίζει πληροφορίες μονάχα για το αρχείο αυτό. Προαιρετικά, το αποτέλεσμα της παραπάνω εκτέλεσης να γράφεται και στο αρχείο eksodos.txt.
ο κώδικας που έχω γραψει είναι ο εξής:
Αλλα δεν είμαι σίγουρη! Μπόρει κάποιος να με βοηθήσει;
ο κώδικας που έχω γραψει είναι ο εξής:
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);
}