Ebbene è proprio così!!
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!
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!
Category: Linux
Neo Freerunner I’m coming back! :)
Processi e sostituzione del programma in esecuzione
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.
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
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
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
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! ![]()
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!















