Category: Linux

Neo Freerunner I’m coming back! :)

Posted by – 11 maggio 2010

Ebbene è proprio così!! :D Dopo circa 1 anno di abbandono totale (causa idiozia) sono fiero di comunicarvi che a breve ri-riceverò il mio nuovo e bellissimo Openmoko Neo Freerunner (maggiori informazioni su questo cellulare-pc li trovate nel Wiki ufficiale). Questa volta riceverò il modello GTA02A7++, ordinato da qui, che comprende molti fix hardware e in più una Debug Board. Costo totale circa 332€ compreso di spese di spedizione! :D Sarò pazzo ma non immaginate neanche quanto mi possa essere pentito a vendere il mokkolo l’ anno scorso!..Ovviamente mi sto già informando sul software da caricare sul Neo. Oltre a SHR, Debian e QtMoko, che non mancheranno sul mio gioiellino, sono contento di aver trovato una nuova distribuzione di nome neoPhysis che è italiana!..Si trova ancora in fase di sviluppo ma non dubito che possa crescere bene..Inoltre vi linko il portale italiano sul telefoninux che è forum.telefoninux.org dove troverete tutto ciò che vi serve per iniziare e continuare col vostro Neo, e moltissima gente davvero molto preparata in grado di aiutarvi!

Processi e sostituzione del programma in esecuzione

Posted by – 28 gennaio 2010

Un semplicissimo esempio riguardo l’ uso delle più comuni funzioni per gestire i processi, ovviamente solo sotto Linux: pid_t fork( );, pid_t getpid( );, pid_t waitpid(pid_t pid, int *status, int options);, void exit(int);.
I due programmi sono strettamente correlati tra loro in quanto il primo, richiamando la funzione int execl (char *nome_programma, char *arg0, char *arg1, …NULL );, sostituisce la sua esecuzione con quella del secondo programma passandogli 4 parametri. Il secondo programma, il broswer Icecat (potete scegliere quale volete), aprirà 3 pagine web. :)
Che divertimento. :D

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
/*
 
 pidexecl.c
 
 Copyright 2010 Antonio Murdaca <tonicooperi13@tonicooperi.eu>
 
     This program is free software: you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
     the Free Software Foundation, either version 3 of the License, or
     (at your option) any later version.
 
     This program is distributed in the hope that it will be useful,
     but WITHOUT ANY WARRANTY; without even the implied warranty of
     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
     GNU General Public License for more details.
 
     You should have received a copy of the GNU General Public License
     along with this program. If not, see <http://www.gnu.org/licenses/>.
 
*/
 
/* Semplice esempio sulla creazione di nuovi processi e un pò della
   loro gestione. Inoltre è presente l' uso della funzione
   int execl (char *nome_programma, char *arg0, char *arg1,...NULL );.
   che sostituisce il primo programma con un altro.
   Il broswer Icecat /usr/bin/icecat (sostituibile con uno qualsiasi)
   aprirà 3 pagine web in 3 schede.
   I numeri di printf (Es. "2.") aiutano a capire l' ordine "cronologico"
   dell' esecuzione delle funzioni sui processi. */
 
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
 
int main(){
 
pid_t pid, pid1, pid2;
int status, status1;
 
char p1[]="";
char p2[]="tonicooperi.eu";
char p3[]="google.it";
char p4[]="google.it";
 
pid=fork();
 
	if (pid==0){
		pid=getpid();
		printf("3.Sono il primo processo figlio con PID=%d\n", pid);
		pid2=fork();
			if(pid2==0){
				pid2=getpid();
				printf("5.Sono il primo processo generato da PID=%d"
							" prima di morire,\n"
							"6.il mio PID invece è"
							" %d\n",pid,pid2);
				exit(26);
			}
		pid=waitpid(pid2,&status1,0);
		printf("7.Il processo %d è morto con Stato=%d\n",pid2,status1/256);
		exit(13);
	} else {
		pid1=getpid();
		printf("1.Sono il processo padre con PID=%d,\n"
		"2.ho creato il primo processo figlio con PID=%d\n", pid1, pid);
		pid1=waitpid(pid,&status,0); 
		printf("4.Il primo processo figlio PID=%d è morto con Stato=%d\n",
			 pid, status/256);
		}
 
		printf("\n8.PID=%d passa 4 parametri, e poi muore, con execl() "
			"al programma /usr/bin/icecat\n", getpid());
		execl("/usr/bin/icecat", p1, p2, p3, p4, NULL);
		exit(1);
 
return EXIT_SUCCESS;
 
}

Perchè dovreste passare a Linux

Posted by – 28 gennaio 2010

Girovagando trovai questa pagina http://www.istitutomajorana.it/passare-linux/index5.html.
Ebbene, l’ articolo presente in essa spiega che ci sono ALMENO (e sottolineo almeno) 27 validi motivi per passare, finalmente, a Linux.
Leggetelo e convincetevi anche voi che passare a Linux è la miglior cosa da fare. Resterete certamente soddisfatti.

Elencare file e cartelle contenuti in una directory

Posted by – 27 gennaio 2010

Quello che segue è un esempio di codice C che, dopo aver chiesto e ottenuto il path di una cartella, stampa su terminale i file e le cartelle contenuti nella directory/path. Le funzioni che ho usato sono: DIR *opendir(const char *name);, struct dirent *readdir(DIR *dir); e qualche struttura associata alle directory. :)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
/* Copyright 2010 Antonio Murdaca <tonicooperi13@tonicooperi.eu>
 
     This program is free software: you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
     the Free Software Foundation, either version 3 of the License, or
     (at your option) any later version.
 
     This program is distributed in the hope that it will be useful,
     but WITHOUT ANY WARRANTY; without even the implied warranty of
     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
     GNU General Public License for more details.
 
     You should have received a copy of the GNU General Public License
     along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
 
/* Semplice programma che chiede il path di una cartella e dopo averlo ottenuto,
   grazie alle funzioni opendir() e readdir(), stampa su terminale i file e le
   cartelle contenuti nella directory/path */
 
#include <sys/stat.h>
#include <sys/types.h>
#include <stdio.h>
#include <dirent.h>
#include <stdlib.h>
 
int main(){
 
DIR *d; 	  //puntatore ad una directory stream
struct dirent *f; //puntatore alla struct dirent di una directory
char path[50];    //vettore per immagazzinare il path
 
printf("Inserisci il path della cartella da visualizzare:\n");
scanf("%s", path);
 
d=opendir(path);   /*assegna a *d un puntatore al directory
		     stream del path indicato*/
 
printf("I file contenuti nella cartella sono:\n");
 
if (d){
	while ((f=readdir(d)))  
	/*assegna alla struct dirent *f la struttura di una cartella
	  Es. il "d_name" che sarebbe il nome della directory*/
 
			 printf("%s\n", f->d_name);
			 //stampa il nome della cartella
	}
 
closedir(d);
return EXIT_SUCCESS;
 
}

GaPiL – Guida alla Programmazione in Linux

Posted by – 26 gennaio 2010

Grazie al mio continuo surfing ho scoperto un’ utilissima guida alla programmazione in Linux chiamata GaPiL.

Il nome è esattamente l’ acronimo di Guida alla Programmazione in Linux e devo dire che ad una prima occhiata sembra davvero fatta bene. Vediamo cos’ è.
GaPiL è stata scritta interamente da Simone Piccardi e citandolo:

GaPiL nasce dalla mia convinzione profonda che la “filosofia” che ispira il software libero si applichi anche ad altri campi che non siano necessariamente quelli della scrittura di programmi per computer. In particolare ritengo che possa assumere una grande rilevanza in ambiti come quelli dell’educazione e della formazione. [...]
GaPiL è un tentativo di scrivere un manuale di programmazione di sistema in ambiente Linux, con una particolare attenzione alle caratteristiche specifiche delle interfacce fornite dal kernel. Benché buona parte della trattazione delle funzioni di libreria faccia riferimento a standard generali come POSIX, si è comunque data una attenzione particolare alle GNU libc, che sono la versione più usata delle librerie del C, senza dimenticare, ove note, di citare le differenze con possibili alternative come le libc5 o le uclibc.
L’obiettivo resta comunque quello di riuscire a produrre un testo, rilasciato sotto GNU FDL, che possa servire a chi si accosta per la prima volta alla programmazione avanzata e di sistema su un kernel Linux. [...]

Direi che non resta altro da fare che scaricarla e imparare quanto più possiamo a programmare in Linux! :D
Inoltre sul suddetto sito potete scaricare materiale, in vari formati, che tratta di svariati argomenti, sempre inerenti a Linux, a mio parere molto utili.
Detto ciò, continuo a leggere questa fantastica guida! :)


Switch to our mobile site