Mknod
# Mknod

mknod è un comando dei sistemi operativi Unix e Unix-like che crea file speciali, ovvero dispositivi a blocchi, dispositivi a caratteri e named pipe.

mknod è anche il nome di una chiamata di sistema definita dallo standard POSIX che appunto permette di creare i file speciali sopra menzionati. Di fatto il comando mknod opera invocando l'omonima chiamata di sistema.

Tutti gli utenti possono creare delle named pipe, mentre per motivi di sicurezza solo il superuser (root) può creare dispositivi a blocchi e dispositivi a carattere.

## Il comando mknod

### Sintassi

La sintassi generale di mknod è la seguente:

Il parametro file indica il nome del file da creare, mentre il parametro tipo è un carattere che indica il tipo di file speciale da creare:

* b – Crea un dispositivo a blocchi.
* c – Crea un dispositivo a caratteri.
* p – Crea una named pipe.

In caso di dispositivi a blocchi e dispositivi a caratteri occorre specificare anche i valori numerici di major_number e minor_number che identificano il dispositivo all'interno del kernel. Tali valori sono altamente specifici per sistema operativo.

In caso di una named pipe essi non vanno specificati.

Un file speciale creato con mknod può essere rimosso con il comando rm come qualunque altro file, posto si abbiano i permessi necessari sulla directory che lo contiene.

### Esempi

Crea un dispositivo a blocchi chiamato /tmp/prova:

Crea un dispositivo a caratteri chiamato /tmp/prova:

Crea una named pipe chiamata /tmp/prova

## La chiamata di sistema mknod

La chiamata di sistema mknod è dichiarata nello header file sys/stat.h:

Il tipo mode_t è un tipo opaco (solitamente un tipo numerico intero) che rappresenta dei permessi d'accesso, e che in questo caso indica anche il tipo di file speciale da creare (dispositivo a blocchi, dispositivo a caratteri o named pipe).

Il tipo dev_t è un tipo opaco (solitamente un tipo numerico intero) che identifica un dispositivo nel kernel.

Il parametro path indica il nome del file speciale da creare.

Il parametro mode indica sia i permessi che il tipo di file da creare.

Il parametro dev deve essere 0 in caso di named pipe, oppure deve indicare il major number ed il minor number del dispositivo a blocchi o a carattere specifico.

### Valore di ritorno

Il valore di ritorno è 0 se non vi sono stati errori. Altrimenti è -1, e la variabile errno indica lo specifico errore.

