Volanie funkcie getpid v jazyku C s príkladmi

Calling Getpid Function C With Examples



Getpid () je funkcia, ktorá sa používa na získanie ID procesu, ktorý túto funkciu volá. PID pre počiatočný proces je 1 a potom je každému novému procesu priradené nové ID. Je to jednoduchý prístup k získaniu PID. Táto funkcia vám pomôže iba pri získavaní jedinečných ID procesov.

Funkcie používané pri získavaní ID

Nachádzajú sa tu dva typy ID. Jedným z nich je aktuálne ID procesu PID. Zatiaľ čo druhý je identifikátor PPID nadradeného procesu. Obe tieto funkcie sú vstavané funkcie, ktoré sú definované v knižnici. Pri spustení kódu bez použitia tejto knižnice môže dôjsť k chybe a zastaví sa spustenie.







funkcia getpid () v C

Keď je nejaký proces vytvorený a prebieha, je mu priradené jedinečné ID. Toto je ID procesu. Táto funkcia pomáha pri vracaní id procesu, ktorý sa práve volá.



funkcia getppid () v C

Toto ID je užitočné pri vracaní procesu nadradeného procesu/funkcie.



Príklad 1
Pochopiť príklad PID v procese v jazyku C. Potrebujete dva nástroje: ľubovoľný textový editor a terminál Linux, na ktorom by ste mali spúšťať príkazy. Vytvorte súbor v ľubovoľnom textovom editore. Vytvorili sme názov súboru code1.c, pretože kód je napísaný v jazyku C, takže by mal byť uložený s príponou .c.





Pridali sme jednu knižnicu. Potom sa spustí hlavný program. V hlavnom programe nazývame vstavanú funkciu getpid (); na načítanie ID aktuálneho procesu. A premenná sa zavedie a priradí. Aby bola hodnota funkcie PID () uložená v tejto premennej, urobíme tlač hodnoty pomocou tejto premennej.



Teraz chceme spustiť obsah tohto súboru v termináli Linux. Predpokladom kódu je najskôr skompilovať a potom spustiť. Na kompiláciu sa používa GCC. Ak váš systém nemá GCC, musíte ho najskôr nainštalovať pomocou príkazu Sudo.

Teraz skompilovajte napísaný kód. To sa dá dosiahnuť pomocou nasledujúceho pripojeného príkazu.

$ GCC –o kód1 kód1.c

Zatiaľ čo –o sa používa na otvorenie súboru na uloženie v príkaze. Potom za –o napíšeme názov súboru.

Po kompilácii spustite príkaz.

$ ./code1

Vyššie uvedený obrázok zobrazuje ID procesu funkcie.

Príklad 2
V predchádzajúcom príklade používame PID. V tomto prípade sa však používa PID aj PPID. Zdrojový kód pre túto funkciu je takmer rovnaký ako predchádzajúci. Iba tam je ďalšie pridanie ID.

Zvážte súbor, ktorý obsahuje dve premenné v hlavnom programe, ktoré sú priradené ID procesu. Jeden je zo súčasného procesu a druhý je z nadradeného procesu. Potom, podobne ako v prvom príklade, vytlačte obe identifikátory prostredníctvom ich premenných.

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

Tieto dve sú hlavnými funkciami celého kódu. Po vytvorení súboru je ďalším krokom kompilácia a spustenie súboru. Kompilujte pomocou GCC v príkaze. Po kompilácii ho spustite na termináli Ubuntu.

$ GCC –o kód1 kód1.c
$ ./code1

Výstup ukazuje, že sa najskôr zobrazí ID procesu a potom sa zobrazí ID nadradeného procesu.

Príklad 3
Všetky procesy bežia a vykonávajú sa súbežne. Proces rodič a dieťa vykoná všetky zostávajúce riadky spoločne. Oba prinášajú výsledky naraz. Ale pomocou vidlice v kóde C, ak táto funkcia vráti hodnotu, ktorá je menšia ako 0, znamená to, že volanie funkcie je ukončené.

Zvážte nový súbor s dvoma knižnicami v príslušnej hlavičke. Tu sa používa podmienka, v ktorej sme použili príkaz if-else. V hlavnom programe je uvedené, že ak je hodnota vidlice v –ive hodnote, zobrazí sa správa, že ID procesu zlyhalo a nebude získané. Ak je situácia nepravdivá, kompilátor sa presunie do ďalšej časti podmienky. V tejto časti sa získa ID procesu, potom zobrazíme toto ID procesu a zobrazíme správu, že bolo získané ID procesu. Tu budeme citovať príkaz if-else zdrojového kódu.

Teraz znova skompilujte kód a potom ho spustite.

./code2

Výstup ukazuje, že druhá časť bola vykonaná, a vytlačí ID procesu a potom zobrazí správu PID.

Príklad 4

Toto je ďalší príklad vysvetlenia rovnakého pojmu. Funkcia Fork () vracia dve rôzne hodnoty. V prípade podradeného procesu je hodnota 0, ktorá sa vráti. Hodnota v prípade nadradeného procesu je zároveň ID procesu nového dieťaťa.

V tomto prípade sa používa rovnaká podmienka if_else. Ale tu platia dve podmienky. Porovnanie PID, ktoré je menšie ako nula a druhého, sa rovná nule. Ak je PID menšie ako nula, zobrazí sa chybové hlásenie. Zatiaľ čo ak sa PID rovná nule, znamená to, že ide o podradený proces, a druhá časť ukazuje, že ak je PID väčšie ako nula, jedná sa o nadradený proces.

Teraz skompilujte a spustite kód.

$ gcc –o kód3 kód3.c
$./code3

Na výstupe vidíme, že druhá časť je vytlačená ako prvá, čo znamená, že ID procesu je väčšie ako 0.

Príklad 5
Dobre, toto je posledný príklad, v ktorom sme sa pokúsili zhrnúť všetky vyššie popísané kódy, aby sme vysvetlili fungovanie tejto funkcie. Na použitie funkcií getpid () môžeme tiež použiť slučky s funkciami fork (). Na vytvorenie mnohých podradených procesov môžeme použiť slučky. Tu musíme v slučke použiť hodnotu 3.

Opäť musíme použiť podmienený príkaz v kóde. Smyčka for začína od jednej a opakuje sa do 3rdotočiť.

Teraz uložte súbor a spustite ho. Existuje ďalšia jednoduchá metóda na kompiláciu a spustenie kódu iba v jednom príkaze. To je.

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

Teraz sa presúvame k výstupu kódu. ID rodičovského procesu je rovnaké vo všetkých podradených procesoch. To znamená, že všetky tieto procesy patria jednému rodičovi. Tieto procesy sa vykonávajú jeden po druhom, pretože slučka je obmedzená na 3. Vykonajú sa iba 3 iterácie.

Záver

Tento článok obsahuje základné znalosti a fungovanie funkcie getPID () v príkazoch Linux. Prostredníctvom tejto funkcie je každému procesu priradené jedinečné ID.