Ano ang isang System Call sa Linux At Paano Ito Gumagana sa Mga Halimbawa

What Is System Call Linux



Ang isang tawag sa system ay isang pagpapaandar na nagbibigay-daan sa isang proseso na makipag-usap sa Linux kernel. Isa lamang itong programmatic na paraan para sa isang programa sa computer upang mag-order ng isang pasilidad mula sa kernel ng operating system. Ang mga tawag sa system ay ilantad ang mga mapagkukunan ng operating system sa mga programa ng gumagamit sa pamamagitan ng isang API (Application Programming Interface). Ang mga tawag sa system ay maaari lamang ma-access ang kernel framework. Kailangan ang mga tawag sa system para sa lahat ng mga serbisyo na nangangailangan ng mga mapagkukunan.

Ang Linux kernel ay pagmamay-ari ng software na naglo-load at nagpapatakbo sa aparato sa hindi bababa sa potensyal na yugto. Ang gawain nito ay upang ayusin ang lahat ng nangyayari sa makina, mula sa keyboard, disk drive, at mga kaganapan sa network hanggang sa pagbibigay ng mga hiwa ng oras para sa kasabay na pagpapatupad ng iba't ibang mga programa. Ang paghihiwalay ng software at hardware ay lumilikha ng isang ligtas na bubble na nagpapabuti sa proteksyon at pagiging maaasahan. Hindi maabot ng mga hindi naka-install na application ang imbakan ng iba pang programa, at kung nabigo ang isa, sinuspinde ng kernel ang proseso upang hindi ito makapinsala sa buong system.







Wafer Thin Wrapper:

Ang mga tawag sa system ng Linux ay hindi malinaw na na-render sa kernel sa ilang mga programa. Halos lahat ng mga programa ay gumagamit ng pangunahing C library at nag-aalok ng isang magaan ngunit mahahalagang pambalot sa mga tawag sa system ng Linux. Ang repository pagkatapos ay nagbibigay ng kasamang tawag sa makina ng Linux pagkatapos matiyak na ang mga parameter ng tampok ay isinalin sa tamang mga pagrehistro ng processor. Tuwing tumatanggap ang pambalot ng data mula sa tawag sa system, pinag-aaralan ito at binibigyan ng malinaw sa programa. Ang anumang operasyon na interactive sa machine sa isang programa ay sa huli ay na-convert sa isang tawag sa system. Kaya, tingnan natin ang ilan sa mga ito. Mayroong isang mahabang listahan ng mga tawag sa system ng Linux na maaari naming magamit sa aming Linux system. Narito ang listahan ng ilang mga karaniwang at kadalasang ginagamit na mga tawag sa system ng Linux.



  • Buksan
  • Isara
  • Exec
  • Sumulat
  • Basahin
  • Lseek
  • Pumili

Talakayin natin ang ilan sa mga tawag sa system ng Linux gamit ang wikang C sa aming artikulo upang makipag-ugnay dito.



Buksan ang Tawag sa System:

Maaari naming gamitin ang Open system call sa aming pamamahagi ng Linux upang mabilis na buksan ang dokumento, na tutukuyin namin sa aming code ng C wika. Ilunsad muna ang terminal ng utos. Maaari mong gamitin ang shortcut na Ctrl + Alt + T. Ipagpalagay na mayroon kang isang test file na text.txt sa direktoryo ng bahay, at naglalaman ito ng ilang nilalaman dito. Kaya, sa simula, kailangan mong lumikha ng isang bagong C type filename new.c sa terminal sa pamamagitan ng nano editor. Samakatuwid, subukan ang simpleng tagubilin sa nano sa ibaba.





$nanobago.c

Ngayon, ang Nano editor ay inilunsad. I-type dito ang ipinakitang code. Mayroon kaming dalawang mga taglaraw ng file sa code. Ang parehong mga file ay maaaring buksan gamit ang bukas na tawag sa system. Naglalaman ang unang tagapaglarawan ng isang nabasa na tawag, at ang pangalawa ay naglalaman ng pagpapaandar ng pagsulat. Ang unang bukas na tawag ay binubuksan ang test file na teksto.txt at nai-save ang nilalaman nito sa tagapaglarawan ng file tsar. Ang pangalawang tawag sa bukas na system ay lumilikha ng isang file na pinangalanang target. Ang target na dokumento ay naibalik sa isang tagapaglarawan ng file na1. Ginagamit ang panuto sa pagsulat upang maisalin ang mga byte ng data sa buffer. I-tap ang Ctrl + S upang mai-save ang code at pindutin ang key shortcut Ctrl + X upang umalis sa file.



Patakbuhin ang tagubilin sa pag-ipon ng gcc upang maipon ang C code na ito.

$gccbago.c

Ipatupad natin ang code gamit ang simpleng a.out query sa shell tulad ng sumusunod:

$./a.out

Ang data ng output ay naipadala sa target ng file. Suriin natin ang target na file gamit ang query ng pusa. Ipinapakita ng output screen ang 20 data ng character sa target na file.

$pusatarget

Tawag ng Exec System:

Ang tawag sa exec system ay inaalis upang magpatakbo ng isang file na kasalukuyang ipinoproseso. Ang dating maipapatupad na file ay pinalitan, at ang kasalukuyang file ay pinapatakbo tuwing tatawag ang exec. Sa pamamagitan ng paggamit ng isang tawag sa system ng exec, maaari naming ipalagay na ang paggawa nito ay mai-o-overlap ang lumang dokumento o aplikasyon sa loop na may bago. Ginagamit ang bagong software upang i-override ang materyal ng buong proseso. Ang dokumento na ang pamagat ay ibinibigay sa pahayag tuwing nagsasagawa ng exec () ay pinalitan para sa seksyon ng impormasyon ng gumagamit na nagpapatakbo ng exec () system call (). Kaya buksan ang terminal ng utos at, gamit ang nano editor, lumikha ng isang bagong file na uri ng C tulad ng sumusunod:

$nanoexp.c

Ang editor ay binuksan na ngayon. Isulat ang kabuuan sa ibaba ng C code ng wika dito. Mayroong tatlong pangunahing mga aklatan na kasama dito. Pagkatapos nito, ang pangunahing pag-andar ay natiyak. Ipinapakita ang pahayag sa pag-print ang data ng string at ang Process Id ng file exp.c. Ang pagpapaandar ng getpid () ay ginamit para sa hangaring ito. Pagkatapos ay mayroon kaming isang uri ng character na may ilang mga halaga dito. Ang tawag sa exec system ay ginamit upang kunin ang pangalan ng file at ang isang linya sa itaas na array bilang isang argument. Ngayon mapoproseso ang file na hello.c. Pagkatapos nito, isa pang pahayag sa pag-print ang dumating sa ngayon, ngunit hindi ito naisakatuparan. Pindutin ang Ctrl + S upang mai-save ang file na ito. Pindutin ang Ctrl + X upang lumabas.

Ngayon ay oras na upang lumikha ng isa pang c file, hello.c gamit ang nano editor. Gamitin ang query sa ibaba sa shell upang magawa ito.

$nanohello.c

Isulat dito ang code sa ibaba. Naglalaman ang code na ito ng dalawang naka-print na pahayag sa pangunahing pag-andar. Ang una ay ang pag-print lamang ng isang string na ibinigay dito, at ang pangalawa ay ang pag-print ng string habang kinukuha ang ID ng proseso ng kasalukuyang ginagamit na file, na hello.c.

Isaayos natin ang parehong mga file nang sunud-sunod gamit ang gcc.

$gcc–O exp exp.c

$gcc–O hello hello.c

Kapag ipinatupad namin ang exp.c file, ilalabas nito ang unang pahayag sa pag-print mula sa exp.c file at kapwa ang mga linya ng pag-print mula sa hello.c file.

$./exp

Konklusyon:

Nailahad namin ang buong konsepto ng mga tawag sa system ng Linux at kung paano ito magagamit sa iyong Linux system. Ginamit namin ang Ubuntu 20.04 habang ipinapatupad ang konseptong ito.