Ang pagtawag sa pagpapaandar ng getpid sa C na may Mga Halimbawa

Calling Getpid Function C With Examples



Ang Getpid () ay ang pagpapaandar na ginamit upang makuha ang proseso ng ID ng proseso na tumatawag sa pagpapaandar na iyon. Ang PID para sa paunang proseso ay 1, at pagkatapos ang bawat bagong proseso ay nakatalaga ng isang bagong Id. Ito ay isang simpleng diskarte sa pagkuha ng PID. Ang pagpapaandar na ito ay makakatulong lamang sa iyo sa pagkuha ng mga natatanging proseso ng mga id.

Mga pagpapaandar na ginamit sa pagkuha ng mga id

Narito ang dalawang uri ng mga ID. Ang isa ay ang kasalukuyang id ng proseso ng PID. Samantalang ang iba pa ay ang id ng proseso ng magulang ng PPID. Ang parehong mga pagpapaandar na ito ay built-in na pagpapaandar na tinukoy sa library. Habang ang pagpapatakbo ng code nang hindi ginagamit ang library na ito ay maaaring maging sanhi ng isang error at huminto sa pagpapatupad.







pagpapaandar ng getpid () sa C

Kapag ang ilang proseso ay nabuo at tumatakbo, isang natatanging id ang itinalaga dito. Ito ang proseso ng id. Ang pagpapaandar na ito ay tumutulong sa pagbabalik ng id ng proseso na kasalukuyang tinatawag.



pagpapaandar ng getppid () sa C

Ang id na ito ay kapaki-pakinabang sa pagbabalik ng proseso ng proseso / pag-andar ng magulang.



Halimbawa 1
Upang maunawaan ang halimbawa ng PID sa proseso sa wikang C. Kailangan mo ng dalawang tool: anumang text editor at ang Linux terminal, kung saan dapat mong patakbuhin ang mga utos. Lumikha ng isang file sa anumang text editor. Lumikha kami ng isang file name code1.c dahil ang code ay nakasulat sa wikang C, kaya dapat itong mai-save gamit ang .c extension.





Nagdagdag kami ng isang solong silid-aklatan. Pagkatapos dito nagsisimula ang pangunahing programa. Sa pangunahing programa, tinawag namin ang built-in na function na getpid (); upang makuha ang kasalukuyang proseso ng id. At isang variable ay ipinakilala at itinalaga. Sa gayon ang halaga ng pagpapaandar ng PID () ay nakaimbak sa variable na ito, pagkatapos ay kukunin namin ang print ng halaga gamit ang variable na ito.



Ngayon nais naming patakbuhin ang mga nilalaman ng file na ito sa Linux terminal. Ang paunang kinakailangan sa code ay dapat na ipunin muna at pagkatapos ay ipatupad. Para sa pagtitipon, ginagamit ang GCC. Kung ang iyong system ay kulang sa GCC, kailangan mo munang mai-install ito sa pamamagitan ng paggamit ng utos ng Sudo.

I-compile ngayon ang code na nakasulat. Magagawa ito sa pamamagitan ng paggamit ng sumusunod na naidugtong na utos.

$ GCC –o code1 code1.c

Samakatuwid –o ay ginagamit upang buksan ang save file sa utos. Pagkatapos pagkatapos –o, nagsusulat kami ng filename.

Pagkatapos ng pagtitipon, patakbuhin ang utos.

$ ./code1

Ipinapakita ng imahe sa itaas ang proseso ng id ng pagpapaandar.

Halimbawa 2
Sa nakaraang halimbawa, ginagamit namin ang PID. Ngunit sa halimbawang ito, parehong ginagamit ang PID at PPID. Ang source code para sa pagpapaandar na ito ay halos kapareho ng naunang isa. Mayroon lamang isa pang pagdaragdag ng isang ID.

Isaalang-alang ang isang file na naglalaman ng dalawang variable sa pangunahing programa na itinalaga ng mga proseso ng ID. Ang isa ay nasa kasalukuyang proseso, at ang isa pa ay nasa proseso ng magulang. Pagkatapos ay katulad sa unang halimbawa, i-print ang parehong mga id sa pamamagitan ng kanilang mga variable.

Int pid_t = getpid ();
Int ppid_t = getppid ();

Ang dalawang ito ang pangunahing pagpapaandar ng buong code. Ngayon, pagkatapos ng paglikha ng file, ang susunod na hakbang ay upang ipagsama at patakbuhin ang file. Compile sa pamamagitan ng paggamit ng GCC sa utos. Pagkatapos ng pagtitipon, pagkatapos ay patakbuhin ito sa terminal ng Ubuntu.

$ GCC –o code1 code1.c
$ ./code1

Ipinapakita ng output na ang proseso ng id ay ipinapakita muna, at pagkatapos ay ipinapakita ang proseso ng proseso ng magulang.

Halimbawa 3
Ang lahat ng mga proseso ay tumatakbo at isagawa sa isang parallel na pamamaraan. Ang magulang at ang anak na proseso ay nagpapatupad ng lahat ng natitirang mga linya nang sama-sama. Parehong nagbibigay ng mga resulta nang paisa-isa. Ngunit sa pamamagitan ng paggamit ng isang tinidor sa C code, kung ang pagpapaandar na ito ay nagbabalik ng isang halaga na mas mababa sa 0, nangangahulugan ito na natapos na ang tawag na pag-andar.

Isaalang-alang ang isang bagong file na mayroong dalawang mga aklatan sa kani-kanilang header. Dito ginagamit ang isang kundisyon kung saan ginamit namin ang pahayag na kung-iba. Sa pangunahing programa, nakasaad na kung ang halaga ng tinidor ay nasa –ive na halaga, magpapakita ito ng isang mensahe na ang proseso ng id ay nabigo at hindi makukuha. Kung ang sitwasyon ay mali, kung gayon ang tagatala ay lilipat sa ibang bahagi ng kundisyon. Sa bahaging ito, nakuha ang proseso ng id, pagkatapos ay ipapakita namin ang prosesong ID at magpapakita ng isang mensahe na nakuha ang proseso ng ID. Dito ay quote namin ang kung-ibang pahayag ng source code.

Ngayon muli, ipunin ang code at pagkatapos ay patakbuhin ito.

./code2

Ipinapakita ng output na ang ibang bahagi ay naisakatuparan at mai-print ang proseso ng id at pagkatapos ay magpapakita ng isang mensahe na PID.

Halimbawa 4

Ito ay isa pang halimbawa ng pagpapaliwanag ng parehong konsepto. Nagbabalik ang pagpapaandar ng Fork () ng dalawang magkakaibang halaga. Sa kaso ng isang proseso ng bata, ang halaga ay 0, na ibabalik. Sa parehong oras, ang halaga sa kaso ng proseso ng magulang ay ang proseso ng ID ng bagong anak.

Sa halimbawang ito, ginagamit ang parehong kondisyon kung_else. Ngunit narito, inilapat ang dalawang kundisyon. Ang paghahambing sa PID na mas mababa sa zero at ang isa pa ay katumbas ng zero. Kung ang PID ay mas mababa sa zero, magpapakita ito ng isang mensahe ng error. Samakatuwid kung ang PID ay katumbas ng zero, nangangahulugan ito na ito ay isang proseso ng bata, at ang iba pang bahagi ay ipinapakita na kung ang PID ay mas malaki kaysa sa zero, ito ay isang proseso ng magulang.

Ngayon ay ipunin at patakbuhin ang code.

$ gcc –o code3 code3.c
$. / code3

Mula sa output, maaari nating makita na ang ibang bahagi ay na-print muna nangangahulugang ang proseso ng ID ay mas malaki sa 0.

Halimbawa 5
O sige, ito ang huling halimbawa kung saan sinubukan naming ibigay ang lahat ng mga code na inilarawan sa itaas upang maipaliwanag ang pagtatrabaho ng pagpapaandar na ito. Maaari din kaming gumamit ng mga loop na may mga pag-andar ng fork () upang magamit ang mga pagpapaandar ng getpid (). Maaari kaming gumamit ng mga loop upang lumikha ng maraming proseso ng bata. Narito kailangan nating gamitin ang halaga ng 3 sa loop.

Muli kailangan naming gamitin ang kondisyong pahayag sa code. Ang para sa loop ay nagsisimula mula sa isa at umulit hanggang sa 3rdlumiko.

Ngayon ay i-save ang file at ipatupad ito. Mayroong isa pang simpleng pamamaraan upang maipon at ipatupad ang code lamang sa isang solong utos. Yan ay.

$ GCC code5.c –o s & ./code5

Ang paglipat ngayon patungo sa output ng code. Ang id ng proseso ng magulang ay magkapareho sa lahat ng proseso ng bata. Nangangahulugan ito na ang lahat ng mga prosesong ito ay nabibilang sa isang magulang. Ang mga prosesong ito ay naisasagawa ng isa pagkatapos ang isa pa dahil ang loop ay limitado sa 3. 3 na pag-ulit lamang ang magagawa.

Konklusyon

Naglalaman ang artikulong ito ng pangunahing kaalaman, at ang pagtatrabaho ng isang pagpapaandar ng getPID () sa mga utos ng Linux. Ang natatanging id ay nakatalaga sa bawat proseso sa pamamagitan ng pagpapaandar na ito.