Getpid funkcijas izsaukšana C ar piemēriem

Calling Getpid Function C With Examples



Getpid () ir funkcija, ko izmanto, lai iegūtu procesa ID, kas izsauc šo funkciju. Sākotnējā procesa PID ir 1, un pēc tam katram jaunam procesam tiek piešķirts jauns ID. Tā ir vienkārša pieeja PID iegūšanai. Šī funkcija tikai palīdz iegūt unikālos procesu ID.

Funkcijas, ko izmanto ID iegūšanai

Šeit ir divu veidu ID. Viens no tiem ir procesa PID pašreizējais ID. Savukārt otrs ir vecāka procesa PPID ID. Abas šīs funkcijas ir iebūvētas funkcijas, kas definētas bibliotēkā. Koda palaišana, neizmantojot šo bibliotēku, var izraisīt kļūdu un pārtraukt izpildi.







getpid () funkcija C

Kad kāds process ir izveidots un darbojas, tam tiek piešķirts unikāls ID. Šis ir procesa ID. Šī funkcija palīdz atgriezt pašlaik izsauktā procesa ID.



funkcija getppid () C

Šis ID ir noderīgs, atgriežot vecāku procesa/funkcijas procesu.



1. piemērs
Lai saprastu PID piemēru procesā C valodā. Jums nepieciešami divi rīki: jebkurš teksta redaktors un Linux terminālis, kurā paredzēts palaist komandas. Izveidojiet failu jebkurā teksta redaktorā. Mēs esam izveidojuši faila nosaukumu code1.c, jo kods ir rakstīts C valodā, tāpēc tas jāsaglabā ar .c paplašinājumu.





Mēs esam pievienojuši vienu bibliotēku. Tad šeit sākas galvenā programma. Galvenajā programmā mēs saucam par iebūvēto funkciju getpid (); lai iegūtu pašreizējā procesa ID. Un tiek ieviests un piešķirts mainīgais. Lai funkcijas PID () vērtība tiktu saglabāta šajā mainīgajā, tad, izmantojot šo mainīgo, mēs izdrukāsim vērtību.



Tagad mēs vēlamies palaist šī faila saturu Linux terminālī. Koda priekšnoteikums vispirms ir jāapkopo un pēc tam jāizpilda. Apkopošanai tiek izmantots GCC. Ja jūsu sistēmai trūkst GCC, vispirms tā jāinstalē, izmantojot komandu Sudo.

Tagad apkopojiet rakstīto kodu. To var izdarīt, izmantojot šādu pievienoto komandu.

$ GCC –o kods1 kods1.c

Tā kā –o tiek izmantots, lai komandā atvērtu saglabāšanas failu. Tad pēc –o mēs ierakstām faila nosaukumu.

Pēc apkopošanas palaidiet komandu.

$ ./code1

Iepriekš redzamais attēls parāda funkcijas procesa ID.

2. piemērs
Iepriekšējā piemērā mēs izmantojam PID. Bet šajā piemērā tiek izmantoti gan PID, gan PPID. Šīs funkcijas avota kods ir gandrīz tāds pats kā iepriekšējais. Tikai ir vēl viens ID papildinājums.

Apsveriet failu, kurā galvenajā programmā ir divi mainīgie, kurus piešķir procesa ID. Viens no tiem ir pašreizējais process, bet otrs - vecāku process. Pēc tam, līdzīgi kā pirmajā piemērā, izdrukājiet abus ID, izmantojot to mainīgos.

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

Šīs divas ir visa koda galvenās funkcijas. Tagad, pēc faila izveides, nākamais solis ir faila apkopošana un palaišana. Kompilējiet, komandā izmantojot GCC. Pēc apkopošanas palaidiet to Ubuntu terminālī.

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

Rezultātā tiek parādīts, ka vispirms tiek parādīts procesa ID, un pēc tam tiek parādīts vecāku procesa ID.

3. piemērs
Visi procesi tiek veikti un izpildīti paralēli. Vecāku un bērnu procesi visas atlikušās rindas izpilda kolektīvi. Abi dod rezultātus vienlaikus. Bet, izmantojot dakšu C kodā, ja šī funkcija atgriež vērtību, kas ir mazāka par 0, tas nozīmē, ka funkcijas izsaukums tiek pārtraukts.

Apsveriet jaunu failu, kura galvenē ir divas bibliotēkas. Šeit tiek izmantots nosacījums, kurā esam izmantojuši paziņojumu, ja citādi. Galvenajā programmā ir norādīts, ka, ja dakšas vērtība ir in -inive vērtība, tā parādīs ziņojumu, ka procesa ID nav izdevies un netiks iegūts. Ja situācija ir nepatiesa, kompilators pāriet uz citu nosacījuma daļu. Šajā daļā tiek iegūts procesa ID, tad mēs parādīsim šo procesa ID un parādīsim ziņojumu, ka procesa ID ir iegūts. Šeit mēs citēsim avota koda if-else paziņojumu.

Tagad atkal apkopojiet kodu un pēc tam palaidiet to.

./kods2

Rezultāts parāda, ka cita daļa ir izpildīta, un izdrukās procesa ID un pēc tam parādīs PID ziņojumu.

4. piemērs

Šis ir vēl viens piemērs tam pašam jēdzienam. Funkcija Fork () atgriež divas dažādas vērtības. Bērna procesa gadījumā vērtība ir 0, kas ir jāatgriež. Tajā pašā laikā vecāku procesa gadījumā vērtība ir jaunā bērna procesa ID.

Šajā piemērā tiek izmantots tas pats nosacījums if_else. Bet šeit tiek piemēroti divi nosacījumi. Salīdzinot PID, kas ir mazāks par nulli, un otrs ir vienāds ar nulli. Ja PID ir mazāks par nulli, tas parādīs kļūdas ziņojumu. Ja PID ir vienāds ar nulli, tas nozīmē, ka tas ir pakārtots process, bet pārējā daļa parāda, ka, ja PID ir lielāks par nulli, tas ir vecāku process.

Tagad apkopojiet un palaidiet kodu.

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

No izvades mēs redzam, ka cita daļa tiek izdrukāta vispirms, nozīmē, ka procesa ID ir lielāks par 0.

5. piemērs
Labi, šis ir pēdējais piemērs, kurā mēs esam mēģinājuši apkopot visus iepriekš aprakstītos kodus, lai izskaidrotu šīs funkcijas darbību. Mēs varam izmantot arī cilpas ar dakšas () funkcijām, lai izmantotu getpid () funkcijas. Mēs varam izmantot cilpas, lai izveidotu daudzus pakārtotus procesus. Šeit mums ir jāizmanto vērtība 3 cilpā.

Atkal mums ir jāizmanto nosacījuma paziņojums kodā. For cilpa sākas no vienas un atkārto līdz 3rdpagriezties.

Tagad saglabājiet failu un izpildiet to. Ir vēl viena vienkārša metode, kā apkopot un izpildīt kodu tikai vienā komandā. Tas ir.

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

Tagad pārejiet uz koda izvadi. Vecāku procesa ID visos bērnu procesos ir identisks. Tas nozīmē, ka visi šie procesi pieder vienam no vecākiem. Šie procesi tiek izpildīti viens pēc otra, jo cilpa ir ierobežota līdz 3. Tiks veiktas tikai 3 iterācijas.

Secinājums

Šajā rakstā ir ietvertas pamatzināšanas un funkcijas getPID () darbība Linux komandās. Izmantojot šo funkciju, unikālais ID tiek piešķirts katram procesam.