Cridant la funció getpid en C amb exemples

Calling Getpid Function C With Examples



Getpid () és la funció que s’utilitza per obtenir l’identificador de procés del procés que crida a aquesta funció. El PID del procés inicial és 1 i, a continuació, cada nou procés té assignat un nou identificador. És un enfocament senzill per obtenir el PID. Aquesta funció només us ajuda a obtenir els identificadors de processos únics.

Funcions utilitzades per obtenir identificadors

Aquí hi ha dos tipus d’identificadors. Un és l’identificador actual del procés PID. Mentre que l'altre és l'identificador del procés pare PPID. Ambdues funcions són funcions integrades que es defineixen a la biblioteca. Si s'executa el codi sense fer servir aquesta biblioteca, es pot produir un error i es deixa d'executar.







funció getpid () en C

Quan es forma i s’executa algun procés, se li assigna un identificador únic. Aquesta és la identificació del procés. Aquesta funció ajuda a retornar l’identificador del procés que s’anomena actualment.



funció getppid () a C

Aquest identificador és útil per retornar el procés del procés / funció pare.



Exemple 1
Per entendre l’exemple de PID en el procés en llenguatge C. Necessiteu dues eines: qualsevol editor de text i el terminal Linux, en què se suposa que heu d'executar les ordres. Creeu un fitxer en qualsevol editor de text. Hem creat un nom de fitxer code1.c ja que el codi està escrit en llenguatge C, de manera que s’ha de desar amb l’extensió .c.





Hem afegit una única biblioteca. A continuació, aquí comença el programa principal. Al programa principal, anomenem la funció incorporada getpid (); per obtenir l’identificador del procés actual. I s’introdueix i s’assigna una variable. De manera que el valor de la funció PID () s’emmagatzemi en aquesta variable, prendrem la impressió del valor utilitzant aquesta variable.



Ara volem executar el contingut d’aquest fitxer al terminal Linux. El requisit previ del codi es compila primer i després s’executa. Per a la compilació, s’utilitza GCC. Si el vostre sistema no té GCC, primer heu d’instal·lar-lo mitjançant l’ordre Sudo.

Ara compileu el codi escrit. Això es pot fer mitjançant l'ordre adjunta següent.

$ GCC –o code1 code1.c

Mentre que –o s'utilitza per obrir el fitxer save a l'ordre. Després, després de –o, escrivim el nom del fitxer.

Després de la compilació, executeu l'ordre.

$ ./code1

La imatge anterior mostra l'identificador de procés de la funció.

Exemple 2
A l'exemple anterior, fem ús del PID. Però en aquest exemple, s’utilitzen tant el PID com el PPID. El codi font d'aquesta funció és gairebé el mateix que l'anterior. Només hi ha una altra addició d'identificador.

Penseu en un fitxer que conté dues variables al programa principal assignades pels identificadors de procés. Una és del procés actual i l’altra és del procés principal. Després, de manera similar al primer exemple, imprimiu els dos identificadors a través de les seves variables.

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

Aquestes dues són les funcions principals de tot el codi. Ara, després de la creació del fitxer, el següent pas és compilar i executar el fitxer. Compileu utilitzant GCC a l'ordre. Després de la compilació, executeu-lo al terminal d'Ubuntu.

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

La sortida mostra que primer es mostra l'identificador de procés i, a continuació, es mostra l'identificador de procés principal.

Exemple 3
Tots els processos s’executen i s’executen de manera paral·lela. Els processos pare i fill executen totes les línies restants de manera col·lectiva. Tots dos donen resultats alhora. Però si utilitzeu una bifurcació al codi C, si aquesta funció retorna un valor inferior a 0, vol dir que la trucada a la funció s'ha finalitzat.

Penseu en un fitxer nou que tingui dues biblioteques a la capçalera respectiva. Aquí s’utilitza una condició en què hem utilitzat la sentència if-else. Al programa principal s’afirma que si el valor de la bifurcació és –ive, mostrarà un missatge que indica que l’identificador del procés ha fallat i no s’obtindrà. Si la situació és falsa, el compilador passarà a l'altra part de la condició. En aquesta part, s’obté l’identificador de procés; a continuació, mostrarem aquest identificador de procés i mostrarem un missatge que indica que s’obté l’identificador de procés. Aquí citarem la declaració if-else del codi font.

Ara, de nou, compileu el codi i, a continuació, executeu-lo.

./code2

La sortida mostra que s’ha executat l’altra part i imprimirà l’identificador de procés i mostrarà un missatge PID.

Exemple 4

Aquest és un altre exemple d’explicació del mateix concepte. La funció Fork () retorna dos valors diferents. En el cas d’un procés secundari, el valor és 0, que s’ha de retornar. Al mateix temps, el valor en el cas del procés principal és l'identificador de procés del fill nou.

En aquest exemple, s’utilitza la mateixa condició if_else. Però aquí s’apliquen dues condicions. Comparant el PID que és inferior a zero i l’altre és igual a zero. Si el PID és inferior a zero, es mostrarà un missatge d'error. Mentre que si el PID és igual a zero, vol dir que és un procés fill i l’altra part mostra que si el PID és superior a zero, és un procés pare.

Ara compileu i executeu el codi.

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

A la sortida, podem veure que l’altra part que s’imprimeix significa que la identificació del procés és superior a 0.

Exemple 5
Molt bé, aquest és l'últim exemple en què hem intentat resumir tots els codis descrits anteriorment per explicar el funcionament d'aquesta funció. També podem utilitzar bucles amb les funcions fork () per utilitzar les funcions getpid (). Podem utilitzar bucles per crear molts processos secundaris. Aquí hem d’utilitzar el valor de 3 al bucle.

Novament hem d’utilitzar la sentència condicional del codi. El bucle for comença des d’un i s’itera fins al 3rdgirar.

Ara deseu el fitxer i executeu-lo. Hi ha un altre mètode senzill per compilar i executar el codi només en una sola ordre. Això és.

$ Codis GCC5.c –o s & ./code5

Avançant cap a la sortida del codi. L'identificador del procés pare és idèntic en tots els processos secundaris. Això significa que tots aquests processos pertanyen a un pare o mare. Aquests processos s’executen un després de l’altre, ja que el bucle està limitat a 3. Només es faran 3 iteracions.

Conclusió

Aquest article conté els coneixements bàsics i el funcionament d'una funció getPID () a les ordres de Linux. Aquesta funció assigna l'identificador únic a cada procés.