Umhlaba wezinhlelo ku-C usalokhu ucebe ngendlela emangalisayo futhi uyinkimbinkimbi, egcwele imisebenzi emikhulu ehlangabezana nezidingo ezahlukahlukene. Thatha, isibonelo, umqondo wosayizi wetheminali ku-C. Umqondo uzungeza ekulungiseni usayizi wetheminali noma isikrini sekhonsoli ngolimi lokuhlela luka-C. Lesi sihloko sicubungula ekuxazululeni okuhlelekile kosayizi wetheminali okhulisayo ngo-C, enikeza incazelo ebanzi yesinyathelo nesinyathelo sekhodi.
Ngakho-ke, kungani usayizi wetheminali ubalulekile? Kuhlelo lwe-C, ikhonsoli noma itheminali inikeza isixhumi esibonakalayo ukuze umsebenzisi ahlanganyele nohlelo. Okuguquguqukayo, izinhlobo zedatha, nokunye okuphumayo konke kukhonjiswa kutheminali. Uma kucatshangelwa ukubaluleka kwayo, ukucaca kanye nesikhala esanele kukhonsoli kusiza ukubheka imiphumela ngendlela efanele.
Ukuqonda Usayizi Wetheminali
Ukungena ujule esihlokweni, ukuqonda ingqikithi kasayizi wetheminali ku-C kubalulekile. Usayizi wetheminali ubhekisela enanini lama-elementi erowu kanye nekholomu iwindi lekhonsoli elingakwazi ukulifaka. Kuyisici esithuthukisa ukuhlelwa nokwethulwa kwemiphumela echaza ukubukeka nomuzwa wekhonsoli.
Imisebenzi efana ne-ioctl(), echazwe kulabhulali i-sys/ioctl.h, idlala indima ebalulekile ekubuyiseni ubukhulu betheminali. Zisebenzisana namapharamitha wedivayisi ezingeni eliphezulu futhi zinikela ngokuphawulekayo emisebenzini embalwa ye-I/O.
#include <sys/ioctl.h> #include <stdio.h> int main() { struct winsize w; ioctl(0, TIOCGWINSZ, &w); printf ("lines %dn", w.ws_row); printf ("columns %dn", w.ws_col); return 0; }
Isixazululo kusayizi wetheminali
Inquma usayizi wetheminali ngo-C ingafinyelelwa ngempumelelo kusetshenziswa umsebenzi we-ioctl(). Umsebenzi uhlangana nosayizi wetheminali futhi ubuyisela inani lemigqa namakholomu atholakalayo. Uhlelo lusebenzisa ucingo lwe-TIOCGWINSZ ukuze lucele usayizi wetheminali bese luphrinta amanani omugqa namakholomu atholiwe.
Njengoba kubonakala ku ikhodi yesampula ngenhla, umsebenzi we-ioctl() ubuyisa ubukhulu betheminali futhi izilinganiso ziphrintwa kusetshenziswa i-printf(). Le datha ngokuvamile isetshenziselwa ukulungisa ukwakheka kokuphumayo komsebenzisi.
Incazelo Yesinyathelo Ngesinyathelo Yekhodi
Ikhodi iqondile uma kuqhathaniswa. Nansi indlela yokuhamba ngesinyathelo:
Emgqeni wokuqala, imitapo yolwazi edingekayo, i-sys/ioctl.h kanye ne-stdio.h, ingenisiwe.
- sys/ioctl.h ingeniselwa umsebenzi we-ioctl()
- stdio.h inikeza core okokufaka kanye okukhipha imisebenzi
Okulandelayo, umsebenzi oyinhloko () uchazwa, obonisa indawo yokungena yekhodi. Lapha yilapho uhlelo luqala khona ukusebenza.
In umugqa olandelayo, into ye-winsize yesakhiwo, w, iyamenyezelwa. Isetshenziselwa ukuxhumana nomsebenzi we-ioctl() futhi igcine ubukhulu betheminali.
Umsebenzi we-ioctl() ube usubizwa ngezimpikiswano ezintathu: 0, TIOCGWINSZ, kanye no-&w. Lapha, u-0 ubhekisela kusichazi sefayela se-stdin, i-TIOCGWINSZ ayiguquki etshela i-ioctl ukuthi ibuyise usayizi wewindi, futhi &w iyisikhombi sesakhiwo se-winsize lapho ubukhulu buzogcinwa khona.
Ngemva kokusebenzisana nobukhulu betheminali kusetshenziswa i-ioctl, usayizi wetheminali (imigqa namakholomu) uboniswa kusetshenziswa i-printf(), kuqedelwa inqubo egcwele.
Lesi sibonelo sibonisa indlela yokuthola futhi ulungise usayizi wetheminali ku-C. Ulwazi losayizi wetheminali lubonakala lubaluleke kakhulu, lusiza ekudaleni izixhumanisi ezisebenziseka kalula kanye nokukhulisa amandla okubuka wetheminali.