ProvaPratica 2010.02.03

From Sistemi Operativi
Jump to navigation Jump to search

http://www.cs.unibo.it/~renzo/so/compiti/2010-02-03.pdf


Esercizio 1

#include <stdio.h>
#include <sys/types.h>
#include <dirent.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <sys/stat.h>

int N_DIR1=0;

void print_reverse(char**ptr)
{
	int i=0;
	for(i=N_DIR1-1;i>-1;i--)
		printf("%s\n",ptr[i]);
}
int main ()
{
	int ris,i=0;
	char c;
	char*tmp;
	struct stat prova;
	char**filedir1=NULL;
	DIR *dp; 
	struct dirent *ep; 
	/*APERTURA DIRECTORY 1*/
	dp = opendir (".");
	if (dp != NULL)
	{
		while ((ep = readdir (dp))) /*Leggo i file nella directory*/
    	{
    		ris=lstat(ep->d_name,&prova); /*Recupero le informazioni sul file*/
    		if (S_ISREG(prova.st_mode)) /*file regolare*/
    		{ 
    		/*IL FILE E' UN ESEGUIBILE REGOLARE*/
    			N_DIR1++;
    			filedir1=(char**)realloc(filedir1,N_DIR1*sizeof(char*));
    			filedir1[N_DIR1-1]=ep->d_name;
    		}
		}
		closedir (dp); /*ORA IN filedir1[] CI SONO TUTTI I FILE DELLA DIRECTORY 1*/
	}
	print_reverse(filedir1);
	return(0);
}

-stefano92

nota: non ho usato la qsort, ma ho semplicemente utilizzato il fatto che readdir() restituisce il contenuto in ordine alfabetico. E' corretto?