Barra laterale

programmazione:glib:scandire_directory

Scansione directory con glib

Autore: Fabio Di Matteo
Ultima revisione: 25/03/2016 - 18:06

Il seguente programma effettua una scansione di una cartella un po' come fa il comando ls su *nix. Si usa con ./scandir /home/user/. Il grosso del lavoro è svolto dalla funzione void scanDir(gchar* dir) .

main.c

#include <glib.h>
#include <stdlib.h> //solo se serve usare exit()
 
 
 
void scanDir(gchar* dir)
{
	GError *error = NULL;
	const gchar* file;
 
	//Cerco di aprire la directory, se ci sono errori li stampa
	GDir *d = g_dir_open( dir,0,&error ); 
	if (error!=NULL) 
	{ 
		g_print(error->message); 
		g_error_free (error);
		exit(-1);
	}
 
	//Non ci sono stati errori e scandaglia la directory
	while(( file = g_dir_read_name(d) ))
	{
		g_print("%s\n",file);	
	}
	//Chiudo la directory
	g_dir_close( d );
	exit(0);
}
 
 
int main(int argc, char** argv)
{
	//Ciclo principale glib
	GMainLoop *loop;
    loop = g_main_loop_new ( NULL , FALSE );
 
	//La funzione che scandaglia la directory presa come argv[1]
	scanDir(argv[1]);
 
	//Eseguo il ciclo principale delle Glib
	g_main_loop_run (loop);
    g_main_loop_unref(loop);
 
 
 
	return 0;
}

makefile

CPP = gcc
OPTS = `pkg-config --cflags --libs  glib-2.0 `


all:
	$(CPP)  main.c -o scandir $(OPTS)


clean:
	rm scandir

programmazione/glib/scandire_directory.txt · Ultima modifica: 18/04/2018 - 15:48 (modifica esterna)