Post con tag linux
Breve tutorial sull’editor VIM
7 giu
VI è un editor di testo, disponibile su diverse piattaforme Unix-like, estremamente flessibile, nonstante la sua complessità. Per questo tutorial verrà utilizzato VI Imporved, un editor in gran parte compatibile con VI.
Creazione di librerie condivise in Unix con GCC
16 mar
Una libreria condivisa (Shared Library) è un file binario contenente un insieme di funzioni richiamabili o classi.
Esse hanno un nome particolare, detto soname, composto dalle lettere iniziali lib, dal nome della libreria, da .so, da un punto e dal numero della versione.
La funzione socketpair
14 feb
I socket locali o Unix domain socket rappresentano un meccanismo di comunicazione tra processi che rimuovono il problema dell’unidirezionalità delle pipe.
Il prototipo della funzione socketpair è il seguente:
int socketpair(int domain, int type, int protocol, int sv[2])
I file di lock in Unix
13 feb
Un semplice metodo di sincronizzazione tra processi è l’utilizzo di file di lock. Nei sistemi Unix/Linux essi vengono generalmente creati nella cartella /var/lock.
Per implementare questa sincronizzazione è possibile utilizzare la funzione open, unita ai flag O_CREAT e O_EXCL, la quale restituisce errore in caso di file esistente.
Il file può essere rimosso tramite unlink:
#include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <stdlib.h> #include <stdio.h> #include <fcntl.h> int lock(const char* filename) { return open(filename, O_EXCL | O_CREAT); } int unlock(const char* filename) { return unlink(filename); } int main() { int fd; char* filename = "/var/lock/test.lock"; char buffer[1024]; if (lock(filename) == -1) { perror("[lock]"); exit(-1); } do { printf("<< "); scanf("%s", buffer); printf(">> %s\n", buffer); } while( strcmp(buffer, "exit") != 0); unlock(filename); }
Se cercheremo di avviare questo programma più volte, ci verrà segnalato un errore, in quanto il file di lock esiste già.
Web Server minimale in C++ su piattaforma Unix/Linux
12 feb
Un Web Server è un’applicazione che ha il compito di rispondere ad una richiesta da parte di un client, fornendogli solitamente una pagina web.
Il Web Server qui descritto è capace di fornire una pagina statica, se questa è presente, o un messaggio di errore se la pagina non è disponibile (cioè, può rispondere con un codice 200 o con un codice 404).
La sua struttura del è molto simile a quella dell’Echo Server.
Echo Server in C++
11 feb
Il seguente articolo mostra l’implementazione di un echo server in C++ su piattaforma Unix/Linux.
Il server utilizza un processo principale per restare in ascolto di connessioni e un processo separato per ogni connessione aperta.
La memoria condivisa in Unix
10 feb
Tra i vari metodi di Interprocess Communication messi a disposizione dai sistemi Unix, c’è da citare la memoria condivisa.
In sostanza un processo crea un segmento di memoria che può essere condivisa da altri processi, i quali possono avere accesso in lettura e scrittura. Per questo motivo, solitamente, la memoria condivisa va accompagnata con un meccanismo di sincronizzazione tra processi.
Le pipe di Unix
8 feb
Le pipe sono uno strumento di comunicazione tra processi (Interprocess Communication) offerti da Unix.
La comunicazione è monodirezionale e avviene sfruttando due file descriptor, uno per la lettura e uno per la scrittura dei dati.
Informazioni di sistema in Unix
7 feb
Lo standard POSIX prevede la funzione uname, definita nell’header sys/utsname.h, per ottenere le informazioni sul sistema corrente.
Gestione del file di password in Unix
6 feb
Il file di password di Unix è un file in cui ogni linea contiene delle informazioni riguardanti un user del sistema.
Esso è utilizzabile in C attraverso l’header pwd.h e la struttura passwd, che replica la struttura di una entry del file di password.
Continua >