Volání funkce getpid v jazyce C s příklady

Calling Getpid Function C With Examples



Getpid () je funkce používaná k získání ID procesu procesu, který tuto funkci volá. PID pro počáteční proces je 1 a poté je každému novému procesu přiřazeno nové ID. Je to jednoduchý přístup k získání PID. Tato funkce vám pomůže pouze při získávání jedinečných ID procesů.

Funkce používané při získávání ID

Jsou zde k dispozici dva typy ID. Jedním z nich je aktuální ID procesu PID. Zatímco druhé je ID PPID nadřazeného procesu. Obě tyto funkce jsou vestavěné funkce, které jsou definovány v knihovně. Při spuštění kódu bez použití této knihovny může dojít k chybě a zastaví se provádění.







getpid () funkce v C

Když se nějaký proces vytvoří a běží, je mu přiřazeno jedinečné ID. Toto je ID procesu. Tato funkce pomáhá při vracení id aktuálně volaného procesu.



getppid () funkce v C

Toto ID je užitečné při vracení procesu nadřazeného procesu/funkce.



Příklad 1
Pochopit příklad PID v procesu v jazyce C. Potřebujete dva nástroje: libovolný textový editor a terminál Linuxu, na kterém byste měli spouštět příkazy. Vytvořte soubor v libovolném textovém editoru. Vytvořili jsme název souboru code1.c, protože kód je napsán v jazyce C, takže by měl být uložen s příponou .c.





Přidali jsme jednu knihovnu. Poté zde začíná hlavní program. V hlavním programu voláme vestavěnou funkci getpid (); načíst ID aktuálního procesu. A proměnná je zavedena a přiřazena. Aby byla hodnota funkce PID () uložena v této proměnné, pak vezmeme tisk hodnoty pomocí této proměnné.



Nyní chceme spustit obsah tohoto souboru v terminálu Linux. Předpokladem kódu je nejprve zkompilovat a poté spustit. Pro kompilaci se používá GCC. Pokud váš systém postrádá GCC, musíte jej nejprve nainstalovat pomocí příkazu Sudo.

Nyní zkompilovejte napsaný kód. Toho lze dosáhnout pomocí následujícího připojeného příkazu.

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

Zatímco –o se používá k otevření souboru pro uložení v příkazu. Potom po –o napíšeme název souboru.

Po kompilaci spusťte příkaz.

$ ./code1

Výše uvedený obrázek ukazuje ID procesu funkce.

Příklad 2
V předchozím příkladu používáme PID. Ale v tomto příkladu se používá PID i PPID. Zdrojový kód pro tuto funkci je téměř stejný jako předchozí. Pouze tam je další přidání ID.

Zvažte soubor, který obsahuje dvě proměnné v hlavním programu, které jsou přiřazeny ID procesu. Jeden je aktuálního procesu a druhý je nadřazeného procesu. Poté, podobně jako v prvním příkladu, vytiskněte obě ID prostřednictvím jejich proměnných.

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

Tyto dvě jsou hlavními funkcemi celého kódu. Nyní, po vytvoření souboru, je dalším krokem kompilace a spuštění souboru. Zkompilovat pomocí GCC v příkazu. Po kompilaci jej spusťte na terminálu Ubuntu.

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

Výstup ukazuje, že se nejprve zobrazí ID procesu a poté se zobrazí ID nadřazeného procesu.

Příklad 3
Všechny procesy běží a provádějí paralelně. Nadřazené a podřízené procesy provádějí všechny zbývající řádky společně. Oba dávají výsledky najednou. Ale pomocí vidlice v kódu C, pokud tato funkce vrací hodnotu, která je menší než 0, znamená to, že volání funkce je ukončeno.

Zvažte nový soubor, který má v příslušné hlavičce dvě knihovny. Zde je použita podmínka, ve které jsme použili příkaz if-else. V hlavním programu je uvedeno, že pokud je hodnota vidlice v –ive hodnotě, zobrazí se zpráva, že ID procesu se nezdařilo a nebude získáno. Pokud je situace nepravdivá, kompilátor se přesune do jiné části podmínky. V této části je získáno ID procesu, poté zobrazíme toto ID procesu a zobrazíme zprávu, že bylo získáno ID procesu. Zde budeme citovat příkaz if-else zdrojového kódu.

Nyní znovu zkompilujte kód a poté jej spusťte.

./code2

Výstup ukazuje, že část else byla spuštěna, vytiskne ID procesu a poté zobrazí zprávu PID.

Příklad 4

Toto je další příklad vysvětlení stejného pojmu. Funkce Fork () vrací dvě různé hodnoty. V případě podřízeného procesu je hodnota 0, která má být vrácena. Hodnota v případě nadřazeného procesu je zároveň ID procesu nového potomka.

V tomto příkladu je použita stejná podmínka if_else. Ale zde platí dvě podmínky. Porovnání PID, které je menší než nula a druhé, se rovná nule. Pokud je PID menší než nula, zobrazí se chybová zpráva. Zatímco pokud se PID rovná nule, znamená to, že se jedná o podřízený proces, a druhá část ukazuje, že pokud je PID větší než nula, jedná se o nadřazený proces.

Nyní zkompilujte a spusťte kód.

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

Z výstupu vidíme, že ostatní část je vytištěna jako první, což znamená, že ID procesu je větší než 0.

Příklad 5
Dobře, toto je poslední příklad, ve kterém jsme se pokusili shrnout všechny výše popsané kódy, abychom vysvětlili fungování této funkce. K použití funkcí getpid () můžeme také použít smyčky s funkcemi fork (). Můžeme použít smyčky k vytvoření mnoha podřízených procesů. Zde musíme ve smyčce použít hodnotu 3.

Opět musíme v kódu použít podmíněné prohlášení. Smyčka for začíná od jedničky a iteruje až do 3rdotáčet se.

Nyní soubor uložte a spusťte. Existuje další jednoduchá metoda pro kompilaci a spuštění kódu pouze v jednom příkazu. To je.

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

Nyní se pohybujeme směrem k výstupu kódu. ID nadřazeného procesu je stejné ve všech podřízených procesech. To znamená, že všechny tyto procesy patří jednomu rodiči. Tyto procesy se provádějí jeden po druhém, protože smyčka je omezena na 3. Budou provedeny pouze 3 iterace.

Závěr

Tento článek obsahuje základní znalosti a fungování funkce getPID () v příkazech Linux. Pomocí této funkce je každému procesu přiřazeno jedinečné ID.