Come usare Scrivi una chiamata di sistema in C

How Use Write System Call C



La chiamata di sistema funge da gateway principale tra i programmi e il kernel del sistema operativo Linux. Sebbene quasi certamente avresti bisogno di una chiamata di sistema per tutta la tua carriera di programmatore C, che tu miri a una produttività eccezionale o a un certo stile di funzionalità, il repository Glibc o altre librerie standard trovate nelle popolari distribuzioni Linux saranno sufficienti per la stragrande maggioranza dei tuoi requisiti. In questa guida, stabiliremo un concetto sulla chiamata Write System in linguaggio C.

Sintassi:

#includere

ssize_tScrivi(int fd, const void*buf, size_t count);

In questa sintassi sopra, la prima riga mostra la libreria per le chiamate di sistema. Sulla seconda riga, fd sta per un descrittore di file che è in effetti un numero che specifica il file aperto di un processo. La parola chiave *buf sta per buffer. Questo contiene tutti i dati al suo interno. Il prossimo è contare. È il numero di byte da scrivere in un descrittore di file dal buffer.







Prerequisiti di installazione:

Per eseguire qualsiasi codice in linguaggio C, devi prima installare alcuni pacchetti nella distribuzione Linux. Se vuoi vedere ulteriori informazioni riguardo alla chiamata di sistema write, devi installare il pacchetto manpages-dev per farlo. Per aprire il terminale utilizzando il tasto di scelta rapida Ctrl+Alt+T. Dopo averlo aperto, scrivi il comando apt install di seguito seguito dalla parola chiave manpages-dev per installare le manpage.



$sudoadattoinstallaremanpages-dev



Ci vorrà del tempo per installare le manpage. Attendi che venga completato.





Dopo l'installazione, puoi vedere le informazioni aggiuntive sulla chiamata di sistema di scrittura tramite il comando man sottostante nella shell.



$uomo 2 Scrivi

La pagina man di output per il comando di scrittura è riportata di seguito. Puoi leggere le informazioni a riguardo. Premere q per uscire dal manuale.

Ora è il momento di installare il pacchetto Gcc nel tuo sistema Linux per lavorare in linguaggio C. Per questo, apri la shell e scrivi il comando apt install di seguito seguito dalla parola chiave gcc.

$sudoadattoinstallare gcc

Nel frattempo, durante l'installazione, potrebbe chiederti di confermare questa azione di installazione premendo y per continuare e n per interromperla. Quindi, tocca il tasto y e premi il tasto Invio.

Verrà installato nel tuo sistema entro alcuni minuti e le ultime righe di output saranno come mostrato nell'istantanea sottostante.

Esempi:

Diamo alcuni esempi di una chiamata di sistema di scrittura nella nostra distribuzione Linux. Pertanto, apri la shell della riga di comando e crea un nuovo file C al suo interno con l'estensione punto c. Devi usare il comando nano sottostante per crearlo e aprirlo rapidamente. Gli abbiamo dato un nome come new.c.

$nanonew.c

Si aprirà la finestra sottostante. Ora devi scrivere il codice apposto in questo file. In questo codice, abbiamo prima incluso una libreria unistd.h. Quindi abbiamo creato la funzione principale e all'interno di questa funzione abbiamo creato una chiamata di sistema di scrittura. In questa chiamata di sistema, il primo parametro è il descrittore di file. In questo caso, l'intero 1 rappresenta lo schermo del dispositivo di output ed è fisso. Quindi il nostro output verrà mostrato sullo schermo. Il secondo parametro mostra i dati del buffer. Puoi aggiungere qualsiasi cosa. E l'ultimo parametro mostra il numero di conteggio per i dati forniti nel parametro buffer. Poiché abbiamo menzionato 5 come numero di conteggio, mostrerà solo i primi 5 byte dei dati del buffer e ignorerà i byte rimasti. Salva questo codice usando il tasto di scelta rapida Ctrl+S ed esci da questo file usando il comando Ctrl+X.

#includere

Int principale()

{Scrivi(1Aqsa Yasin5);}

Ora nel terminale, prova il seguente comando gcc per compilare questo codice appena creato con un nome file.

$gccnew.c

Esaminiamo questo codice utilizzando il file a.out predefinito creato in fase di esecuzione. Quindi, prova il seguente comando a.out per controllare l'output della chiamata di sistema di scrittura. Dobbiamo usarlo con ./ per selezionare il file dalla directory corrente.

$./a.out

L'output che puoi vedere ha visualizzato solo la parola Aqsa a causa del numero di conteggio 5.

Cambiamo un po' il nostro codice. Abbiamo cambiato il numero di conteggio in 11 perché abbiamo un totale di 11 byte nei nostri dati buffer Aqsa Yasin. Quindi questa volta, l'output mostrerà gli interi byte dei dati di stringa Aqsa Yasin. Salva questo file usando Ctrl+S ed esci usando il tasto di scelta rapida Ctrl+X.

Compiliamo il codice aggiornato utilizzando il compilatore gcc appena installato per la distribuzione Linux. Prova lo stesso comando gcc insieme al nome di un file come new.c.

$gccnew.c

Ora mostra l'output dello stesso codice usando il precedente comando a.out come di seguito. L'output mostra la stringa completa Aqsa Yasin del buffer.

$./a.out

Vediamo come funziona il codice quando prendiamo il numero di conteggio maggiore del numero totale di byte contenuti nei dati del buffer. Quindi, abbiamo utilizzato il conteggio come 30. Salva e chiudi il file.

Compila lo stesso file aggiornato usando il comando gcc come di seguito.

$gccnew.c

Ora esegui il file usando il comando a.out e l'output mostrerà i dati del buffer e alcuni valori spazzatura con esso come visualizzato nell'output dell'istantanea di seguito.$ ./a.out

Puoi anche controllare il numero totale di byte scritti nel file utilizzando il codice seguente nello stesso file.

Compila il codice tramite l'istruzione gcc.

$gccnew.c

L'output mostra il numero totale di byte, inclusi i dati del buffer e l'interruzione di riga, utilizzando il comando a.out.

$./a.out

Conclusione:

In questo tutorial, abbiamo elaborato il concetto per utilizzare la chiamata di sistema Write in C. Prova tutti gli esempi per comprendere l'idea della chiamata di sistema write usando questo articolo.