Memanggil fungsi getpid di C dengan Contoh

Getpid() is the function used to get the process ID of the process that calls that function. PID for the initial process is 1, and then each new process is assigned a new Id. It is a simple approach to getting the PID. This function only helps you in getting the unique processes ids.

Functions used in getting ids

Two types of IDs are present here. One is the current id of the process PID. Whereas the other is the id of the parent process PPID. Both these functions are built-in functions that are defined in <unistd.h> library. While running the code without using this library may cause an error and stops executing.

getpid() function in C

When some process is formed and is running, a unique id is assigned to it. This is the process id. This function helps in returning the id of the process that is currently called.

getppid() function in C

This id is useful in returning the process of the parent process/function.

Example 1
To understand the example of PID in the process in the C language. You need two tools: any text editor and the Linux terminal, on which you are supposed to run the commands. Create a file in any text editor. We have created a file name code1.c as the code is written in C language, so it should be saved with the.c extension.

We have added a single library. Then here starts the main program. In the main program, we call the built-in function getpid(); to fetch the current process’s id. And a variable is introduced and assigned. So that the value of the PID() function is stored in this variable, then we will take the print of the value using this variable.

Now we want to run the contents of this file in the Linux terminal. code prerequisite is to be compiled first and then execute. For compilation, GCC is used. If your system lack GCC, then you need to install it first by using the Sudo command.

Now compile the code written. This can be accomplished by using the following appended command.

$ GCC –o code1 code1.c

Whereas –o is used to open the save file in the command. Then after –o, we write the filename.

After compilation, run the command.

$./code1

above image shows the process id of the function.

Example 2
In the previous example, we make use of the PID. But in this example, both the PID and PPID are used. source code for this function is almost the same as the preceding one. Only there is another addition of an ID.

Consider a file that contains two variables in the main program that are assigned by the process IDs. One is of the current process, and the other one is of the parent process. Then similar to the first example, print both the ids through their variables.

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

Keduanya adalah fungsi utama dari keseluruhan kode. Sekarang, setelah pembuatan file, langkah selanjutnya adalah mengkompilasi dan menjalankan file. Kompilasi dengan menggunakan GCC pada perintah. Setelah dikompilasi, lalu jalankan di terminal Ubuntu.

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

Output menunjukkan bahwa id proses ditampilkan terlebih dahulu, dan kemudian id proses induk ditampilkan.

Contoh 3
Semua proses berjalan dan dieksekusi secara paralel. Proses induk dan anak mengeksekusi semua baris yang tersisa secara kolektif. Keduanya memberikan hasil pada suatu waktu. Tetapi dengan menggunakan fork pada kode C, jika fungsi ini mengembalikan nilai yang kurang dari 0, berarti pemanggilan fungsi dihentikan.

Pertimbangkan file baru yang memiliki dua perpustakaan di header masing-masing. Di sini kondisi digunakan di mana kami telah menggunakan pernyataan “jika-lain”. Pada program utama dinyatakan bahwa jika nilai fork berada pada nilai –ive, maka akan muncul pesan bahwa proses id gagal dan tidak akan didapatkan. Jika situasinya salah, maka kompiler akan pindah ke bagian lain dari kondisi tersebut. Pada bagian ini proses id diperoleh, kemudian kita akan menampilkan ID proses ini dan menampilkan pesan bahwa ID proses diperoleh. Di sini kita akan mengutip pernyataan if-else dari kode sumber.

Sekarang lagi, kompilasi kode dan kemudian jalankan.

./code2

Output menunjukkan bahwa bagian lain telah dieksekusi dan akan mencetak id proses dan kemudian menampilkan pesan PID.

Contoh 4

Ini adalah contoh lain untuk menjelaskan konsep yang sama. Fungsi Fork() mengembalikan dua nilai yang berbeda. Dalam kasus proses anak, nilainya adalah 0, yang akan dikembalikan. Pada saat yang sama, nilai dalam kasus proses induk adalah ID proses dari anak baru.

Dalam contoh ini, kondisi if_else yang sama digunakan. Tapi di sini, dua kondisi diterapkan. Membandingkan PID yang kurang dari nol dan yang lainnya sama dengan nol. Jika PID kurang dari nol, maka akan muncul pesan error. Sedangkan jika PID sama dengan nol berarti merupakan proses anak, dan bagian else menunjukkan bahwa jika PID lebih besar dari nol maka merupakan proses induk.

Sekarang kompilasi dan jalankan kodenya.

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

Dari output, kita dapat melihat bahwa bagian else yang dicetak terlebih dahulu berarti ID proses lebih besar dari 0.

Contoh 5
Baiklah, ini adalah contoh terakhir di mana kita mencoba merangkum semua kode yang dijelaskan di atas untuk menjelaskan cara kerja fungsi ini. Kita juga dapat menggunakan loop dengan fungsi fork() untuk menggunakan fungsi getpid(). Kita dapat menggunakan loop untuk membuat banyak proses anak. Di sini kita harus menggunakan nilai 3 dalam loop.

Sekali lagi kita harus menggunakan pernyataan kondisional dalam kode. Perulangan for dimulai dari yang satu dan iterasi sampai putaran ke- 3.

Sekarang simpan file dan jalankan. Ada metode sederhana lain untuk mengkompilasi dan mengeksekusi kode hanya dalam satu perintah. Itu adalah.

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

Sekarang bergerak menuju output dari kode. Id dari proses induk identik di semua proses anak. Ini berarti semua proses ini milik satu orang tua. Proses-proses ini dieksekusi satu demi satu karena loop terbatas pada 3. Hanya 3 iterasi yang akan dilakukan.

Kesimpulan

Artikel ini berisi pengetahuan dasar, dan cara kerja fungsi getPID() dalam perintah Linux. Id unik diberikan untuk setiap proses melalui fungsi ini.

Related Posts