C Programmazione

Come usare Scrivi una chiamata di sistema in C

Come usare Scrivi una chiamata di sistema in 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_t write(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 in esso. Il prossimo è il conteggio. È il numero di byte da scrivere in un descrittore di file dal buffer.

Prerequisiti per l'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 usando 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 manpages.

$ sudo apt install manpages-dev

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

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

$ uomo 2 scrivi

La pagina man di output per il comando "write" è 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".

$ sudo apt install 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:

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

$ nano nuovo.c

Si aprirà la finestra sottostante. Ora devi scrivere il codice apposto in questo file. In questo codice abbiamo incluso un unistd.h libreria prima. Quindi abbiamo creato la funzione principale e, all'interno di questa funzione, abbiamo creato una chiamata di sistema "scrivi". 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. Come 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(1, "Aqsa Yasin", 5);

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

$ gcc nuovo.c

Diamo un'occhiata a questo codice usando l'impostazione predefinita a.out file creato in fase di esecuzione. Quindi, prova quanto segue a.comando out per controllare l'output della chiamata di sistema "write". Dobbiamo usarlo con "./" per selezionare il file dalla directory corrente.

$ ./un.su

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 del buffer "Aqsa Yasin". Quindi questa volta, l'output mostrerà l'intero byte di 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 usando il compilatore gcc appena installato per la distribuzione Linux. Prova lo stesso comando gcc insieme al nome di un file come "nuovo.c".

$ gcc nuovo.c

Ora visualizza l'output dello stesso codice usando il precedente "a.out" come sotto. L'output mostra la stringa completa "Aqsa Yasin" del buffer.

$ ./un.su

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

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

$ gcc nuovo.c

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

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

Compila il codice con l'istruzione gcc.

$ gcc nuovo.c

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

$ ./un.su

Conclusione:

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

I 10 migliori giochi da giocare su Ubuntu
La piattaforma Windows è stata una delle piattaforme dominanti per i giochi a causa dell'enorme percentuale di giochi che si stanno sviluppando oggi p...
I 5 migliori giochi arcade per Linux
Al giorno d'oggi, i computer sono macchine serie utilizzate per i giochi. Se non riesci a ottenere il nuovo punteggio più alto, saprai cosa intendo. I...
Battaglia per Wesnoth 1.13.6 Sviluppo rilasciato
Battaglia per Wesnoth 1.13.6 rilasciato il mese scorso, è la sesta versione di sviluppo nella 1.13.x e offre una serie di miglioramenti, in particolar...