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[1] 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

[modifica | modifica wikitesto]

La sintassi generale di mknod è la seguente:

mknod file tipo major_number minor_number 

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.

Crea un dispositivo a blocchi chiamato /tmp/prova:

# mknod /tmp/prova b 2 0 

Crea un dispositivo a caratteri chiamato /tmp/prova:

# mknod /tmp/prova c 2 0 

Crea una named pipe chiamata /tmp/prova

$ mknod /tmp/prova p 

La chiamata di sistema mknod

[modifica | modifica wikitesto]

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

#include <sys/stat.h> int mknod(const char *path, mode_t mode, dev_t dev); 

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

[modifica | modifica wikitesto]

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

  1. ^ (EN) mknod, in The Open Group Base Specifications Issue 6 IEEE Std 1003.1, 2004 Edition. URL consultato il 30-05-2008.

Voci correlate

[modifica | modifica wikitesto]

Collegamenti esterni

[modifica | modifica wikitesto]
  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica