Mknod Esempio in C

Mknod Esempio in C

Un tubo nominato a volte indicato come FIFO, è un modo per l'interazione tra processi nel calcolo. È una versione Linux della nozione classica del tubo. Un tubo tradizionale è "senza nome" e dura solo fino a quanto lo fa la procedura. D'altra parte, un tubo chiamato può durare fintanto che il sistema è operativo, anche se il processo non è più attivo. Se non è più necessario, può essere rimosso. Un tubo denominato di solito viene visualizzato come un file e i processi si collegano ad esso per l'interazione tra processo.

Un file FIFO è un tipo di file di archiviazione locale che consente a due o più processi di interagire tra loro leggendo e scrivendo da e verso di esso. Lo svantaggio principale dei tubi è che possono essere utilizzati solo da un processo, che può avere sia lettori che scrittori o processi che utilizzano lo stesso elenco di descrittori di file; Di conseguenza, i tubi hanno un grave svantaggio: non possono passare i dati tra i processi che non sono correlati. Questo è in quanto non condividono una tabella descrittore di file. Tuttavia, se i tubi vengono forniti nomi, possono essere letti e scritti come qualsiasi altro file. I processi non devono nemmeno connettersi.

I tubi nominati sono FIFO, i.e. Primo in, i primi tubi. Il guscio può essere usato per generare FIFOS. Possono, tuttavia, essere eseguiti con la programmazione C utilizzando la chiamata di sistema mknod (). L'opzione Modalità determina le autorizzazioni che verranno utilizzate e il tipo di nodo che verrà generato. Dovrebbe essere un po 'in modo o congiunta di uno dei tipi di file indicati di seguito e dei privilegi del nuovo nodo. La Umask del processo modifica le autorizzazioni come al solito: le autorizzazioni del nodo generato. Se mknod () ha successo, restituisce zero; Altrimenti, restituisce -1.

Sintassi

int mknod (const char *nameofpath, modalità modalità_t, dev_t dev);

Il percorso che stai utilizzando per il file è il percorso. Una serie di bit che descrivono il tipo di file e i privilegi di accesso che intendi utilizzare è noto come "modalità". S_ifdir, che viene utilizzato per costruire una directory, e s_ififo, che viene utilizzato per stabilire un FIFO, sono gli unici tipi di file consentiti. Il più delle volte, Dev è “ignorato."

Esempio

Dopo aver spiegato il concetto di base e la sintassi del sistema Mknod () Chiama nel linguaggio di programmazione C, abbiamo definito un esempio per la comprensione del nostro utente. Stiamo implementando il nostro codice di esempio in Ubuntu 20.04 Sistema operativo Linux con un compilatore GCC per l'esecuzione e la compilazione del codice. Abbiamo usato il comando nano nella shell per la creazione del file. Per eseguire un esempio in lingua C, abbiamo usato il ".C ”Estensione del file.

Eseguiamo il comando elencato di seguito nella console di Ubuntu 20.04 Sistema operativo Linux per la creazione di file.

$ nano w.C

Nel nostro caso, il nome del file è "W.C ", puoi anche modificarlo. Ora il file verrà creato e si aprirà nell'editor GNU. Devi scrivere lo script mostrato nell'immagine di seguito.

Lo script può essere modificato in base al tuo lavoro, ma a tale scopo, devi comprendere appieno questo esempio di base. Il descrittore di file predefinito per un programma per scrivere messaggi di avviso è guidato, spesso noto come errore standard. L'errore viene stampato nella schermata di output o nel terminale della finestra utilizzando STEER. STEER è stato uno degli output di comandi, simile a stdout, che è spesso registrato altrove. S_irusr è una costante macro posix trovata in sys/stat. H. Il bit di autorizzazione di lettura dell'utente è quello che si chiama. Il prefisso S_ RUSR potrebbe fare riferimento allo stato, come la lettura dell'utente. S_irusr è una costante macro posix trovata in sys/stat. H. Il bit di accesso a lettura dell'utente è quello che si chiama. Il prefisso S_ RUSR potrebbe fare riferimento allo stato, come la lettura dell'utente. Vogliamo fornire all'utente l'accesso di lettura e scrittura in questa situazione. Di conseguenza, impostiamo la modalità su S irusr | S iwusr | S ififo. Dev viene verificato se il tipo di file è S_IFCHR o S_IFBLK; Tuttavia, è ignorato.

Di conseguenza, abbiamo usato 0 come parametro. Il metodo Perror () restituisce un messaggio di errore standard che descrive in dettaglio l'errore più recente riscontrato mentre si chiama una funzione di sistema o libreria. Dopo aver scritto e compreso lo script, devi chiudere il file e semplicemente tornare alla console. Eseguiamo il comando seguente in Ubuntu 20.04 Console del sistema operativo Linux per la compilazione e l'esecuzione dello script.

$ GCC W.C
$ ./UN.fuori

Guardando l'immagine sopra attaccata, puoi facilmente identificare che non viene visualizzato alcun errore dopo la compilazione. L'output previsto può essere visto anche sullo schermo.

Conclusione

Questo articolo parlava di mknod () di sistema di sistema di programmazione C. Abbiamo fatto del nostro meglio per illuminarti sull'uso di base della chiamata di sistema mknod (). La sintassi della chiamata di sistema mknod () è stata spiegata per la comprensione dell'utente. L'esempio utilizzato in questa guida è molto semplice e gli utenti alle prime armi possono anche capire in prima volta. Spero che questo articolo ti guiderà ogni volta che provi a utilizzare la chiamata di sistema mknod () in linguaggio di programmazione C.