Paano Gumamit ng Open System Call sa C

How Use Open System Call C



Ang mga tawag sa system ay ginagamit sa mga pamamahagi ng Linux upang magbigay ng isang pintuan sa loob ng Linux OS at mga programa. Gumagamit ang operating system ng Linux ng library ng Glibc upang suportahan ang mga tawag sa system dito habang ginagamit ang wikang C. Marami pang mga paraan upang magamit din ang mga tawag sa system. Sa gabay sa artikulong ito, tatalakayin namin ang bukas na tawag sa system sa Linux system. Ang tawag sa Open system ay ginamit upang buksan ang file na tinukoy sa path nang mabilis. Ipinaalam nito sa amin ang tungkol sa file na tagapaglarawan ng isang file na nilikha ng gumagamit. Gumagamit kami ng Ubuntu 20.04 upang makakuha ng ilang hands-on na Open system call.

Mag-install ng Mga Aklatan

Ang wikang C ay nangangailangan ng ilang karagdagang mga package sa library upang mai-install bilang mga paunang kinakailangan. Una sa lahat, kailangan mong i-install ang manpages-dev package upang suriin ang impormasyon tungkol sa mga tawag sa system. Buksan ang terminal ng command line mula sa lugar ng aktibidad at isagawa ang tagubilin sa ibaba upang mag-install ng mga manpage.







$ sudo apt i-install ang mga manpage-dev



Ang output para sa pagkumpleto ng pag-install ay ibinigay sa ibaba.







Ngayon susuriin namin ang bukas na tawag sa system gamit ang man command tulad ng nasa ibaba.

$ tao2buksan



Ang pahina ng output man para sa tawag sa Open system ay ipinakita sa ibaba. Maaari mong makita ang karagdagang impormasyon tungkol dito. Pindutin ang pindutan ng q upang lumabas dito.

Ipinapakita ng syntax sa itaas ang unang tatlong linya ng mga kinakailangang aklatan upang maidagdag para sa mga tawag sa system. Mayroong tatlong mga syntax na magagamit para sa bukas na tawag sa system. Ipinapakita ng unang syntax ang pathname, na kung saan ay ang pangalan ng isang file na bubuksan. Ang pangalawang parameter, mga watawat, ay nagpapakita ng mode ng isang file, hal., Magbasa o sumulat. Maaaring magamit ang pangalawang syntax kapag wala ang file. Ginamit ang parameter mode upang maipakita ang mga pribilehiyo sa file.

Panahon na ngayon upang mai-install ang tagatala ng GCC para sa pag-debug ng C code sa pamamahagi ng Ubuntu 20.04 Linux. Para doon, isagawa ang tagubilin sa ibaba sa shell upang magawa ito.

$ sudo apt install gcc

Kinakailangan mong i-tap ang Y upang ipagpatuloy ang pag-install ng GCC compiler, kung hindi man ay pindutin ang n button upang isara ang pag-install. Kaya pindutin ang y button at pindutin ang Enter upang magpatuloy.

Ang output para sa pagkumpleto ay ipinapakita sa ibaba.

Halimbawa 01

Tingnan natin ang napakasimpleng halimbawa ng isang tawag sa Open system. Una, sa lahat buksan ang command shell at lumikha ng isang bagong text file test.txt gamit ang simpleng touch command tulad ng sumusunod:

$hawakanpagsubok.txt

Manu-manong magdagdag ng ilang data. Maaari mong makita ang data sa isang file gamit ang nasa ibaba na utos ng pusa.

$pusapagsubok.txt

Ngayon gumawa tayo ng isang bagong C file gamit ang isang nano utos sa shell, tulad ng ipinakita sa ibaba.

$nanobago.c

Ang nasa ibaba GNU nano file ay bubuksan. Kailangan mong i-type ang nasa ibaba C code ng wika dito. Maaari mong makita na naidagdag namin ang mga kinakailangang package ng library para sa C code upang maipatupad nang maayos. Pagkatapos nito, natukoy namin ang pangunahing pagpapaandar upang gumana sa isang tawag sa Open system. Nagdeklara kami ng dalawang variable ng integer. Ginagamit ang variable ng n upang mabilang ang mga halaga ng buffer, at ang taut ay ginagamit para sa deskriptor ng file. Inihayag namin ang uri ng buffer na uri ng character bilang buf na may sukat na 50. Ginamit ang bukas na tawag sa system upang mabasa ang nilalaman mula sa file test.txt at ibalik ito sa deskriptor ng file. Ang O_RDONLY ay ginamit para sa mga hangarin sa pagbabasa. Ipinapakita ng susunod na linya ang tawag sa system na basahin upang kolektahin ang 10 bytes mula sa buffer at ibalik ito sa integer n. Gayundin, ang command na sumulat ay ginamit upang isulat ang nilalaman o buffer data sa deskriptor ng file, na kung saan ay ang output screen Sa aming kaso ngayon. I-save ang file na ito gamit ang Ctrl + S at isara ito gamit ang Ctrl + X command.

# isama
# isama
# isama
# isama

intpangunahing()
{
intn,taut;
chartagabili[limampu];
taut=buksan(pagsusulit.txt,O_RDONLY);
n=basahin(taut,tagabili, 10);
sumulat(1 ,tagabili, 10);

Ipunin muna natin ang C code para sa isang bukas na tawag sa system gamit ang gcc command sa ibaba.

$gccbago.c

Panahon na ngayon upang suriin ang output para sa C code para sa isang bukas na tawag sa system. Gamitin natin ang nasa ibaba a.out command sa shell. Ipinapakita ng output ang 10 bytes mula sa nilalaman ng isang file test.txt.

$./sapalabas

Kumuha tayo ng isa pang halimbawa upang isulat ang mga nilalaman ng isang file sa isa pang file gamit ang isang tawag sa Open system. Upang lumikha ng isang bagong C file gamit ang nano command tulad ng nasa ibaba.

$ nano bago.c

Kaya kunin ang parehong code na may kaunting pagbabago dito. Natukoy namin ang isa pang tagapaglarawan ng file sa code bilang taut1. Ang lahat ng mga code ay pareho maliban sa isang karagdagang linya. Ang pangalawang huling linya ng code ay ginamit ang bukas na tawag sa system upang lumikha ng isang bagong file na pinangalanang target gamit ang O_CREAT at ang mode, isulat lamang bilang O_WRONLY. Ipinapakita ng 0642 ang mga pribilehiyong nakatalaga sa file na ito. At ang file ay naibalik sa isang bagong deskriptor ng file. Ang susunod na linya ay nagpakita ng isang utos na isulat ang mga byte ng nilalaman sa buffer alinsunod sa deskriptor ng file nito. I-save ang file at isara ito.

Ipatupad ang utos ng comp ng gcc upang i-debug ang file ng wikang C.

$ gcc bago.c

Upang maipakita ang output ng C code, subukan ang a.out na tagubilin sa shell tulad ng nasa ibaba. Walang output dahil ang output ay nai-redirect sa bagong nilikha na target ng file.

$./sapalabas

Suriin natin ang data ng isang target ng file gamit ang utos ng pusa. Ipinapakita ng output na ang file ay mayroong 20 bytes dito.

target ng $ cat

Konklusyon

Sa tutorial sa itaas, ipinaliwanag namin sa iyo na gumamit ng isang bukas na tawag sa system sa wika ng C sa pamamagitan ng paggamit ng gcc compiler. Sa tulong ng iba't ibang mga halimbawa na ipinaliwanag sa patnubay na ito ay hahantong sa iyo upang ipatupad ang iyong ninanais na programa.