Memanggil fungsi getpid dalam C dengan Contoh

Calling Getpid Function C With Examples



Getpid () adalah fungsi yang digunakan untuk mendapatkan ID proses proses yang memanggil fungsi tersebut. PID untuk proses awal adalah 1, dan kemudian setiap proses baru diberikan Id baru. Ini adalah kaedah mudah untuk mendapatkan PID. Fungsi ini hanya membantu anda dalam mendapatkan id proses unik.

Fungsi yang digunakan dalam mendapatkan id

Dua jenis ID terdapat di sini. Salah satunya ialah id proses PID semasa. Manakala yang lain adalah id PPID proses induk. Kedua fungsi ini adalah fungsi terbina dalam yang ditentukan di perpustakaan. Semasa menjalankan kod tanpa menggunakan perpustakaan ini dapat menyebabkan kesalahan dan berhenti dijalankan.







fungsi getpid () dalam C

Apabila beberapa proses terbentuk dan sedang berjalan, id unik diberikan kepadanya. Ini adalah id proses. Fungsi ini membantu mengembalikan id proses yang sedang dipanggil.



fungsi getppid () dalam C

Id ini berguna dalam mengembalikan proses proses / fungsi induk.



Contoh 1
Untuk memahami contoh PID dalam proses dalam bahasa C. Anda memerlukan dua alat: mana-mana editor teks dan terminal Linux, di mana anda seharusnya menjalankan perintah. Buat fail di mana-mana penyunting teks. Kami telah membuat nama fail code1.c kerana kod tersebut ditulis dalam bahasa C, jadi ia harus disimpan dengan pelanjutan .c.





Kami telah menambah satu perpustakaan. Kemudian di sini memulakan program utama. Dalam program utama, kami memanggil getpid fungsi terbina dalam (); untuk mengambil id proses semasa. Dan pemboleh ubah diperkenalkan dan diberikan. Sehingga nilai fungsi PID () disimpan dalam pemboleh ubah ini, maka kita akan mengambil cetakan nilai menggunakan pemboleh ubah ini.



Sekarang kita mahu menjalankan kandungan fail ini di terminal Linux. Prasyarat kod harus disusun terlebih dahulu dan kemudian dilaksanakan. Untuk penyusunan, GCC digunakan. Sekiranya sistem anda kekurangan GCC, maka anda perlu memasangnya terlebih dahulu dengan menggunakan perintah Sudo.

Sekarang kumpulkan kod yang ditulis. Ini dapat dicapai dengan menggunakan perintah tambahan berikut.

$ GCC –o code1 code1.c

Manakala –o digunakan untuk membuka fail simpan dalam perintah. Kemudian selepas –o, kami menulis nama fail.

Selepas penyusunan, jalankan arahan.

$ ./kod1

Gambar di atas menunjukkan id proses fungsi.

Contoh 2
Dalam contoh sebelumnya, kami menggunakan PID. Tetapi dalam contoh ini, kedua-dua PID dan PPID digunakan. Kod sumber untuk fungsi ini hampir sama dengan yang sebelumnya. Hanya ada penambahan ID lain.

Pertimbangkan fail yang mengandungi dua pemboleh ubah dalam program utama yang ditetapkan oleh ID proses. Salah satunya adalah proses semasa, dan yang lain adalah proses induk. Kemudian serupa dengan contoh pertama, cetak kedua-dua id melalui pemboleh ubahnya.

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

Kedua-duanya adalah fungsi utama keseluruhan kod. Sekarang, setelah pembuatan fail, langkah seterusnya adalah menyusun dan menjalankan fail. Kompilasi dengan menggunakan GCC dalam arahan. Selepas penyusunan, kemudian jalankan di terminal Ubuntu.

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

Output menunjukkan bahawa id proses dipaparkan terlebih dahulu, dan kemudian id proses induk dipaparkan.

Contoh 3
Semua proses berjalan dan dilaksanakan secara selari. Proses ibu bapa dan anak melaksanakan semua baris yang tinggal secara kolektif. Kedua-duanya memberikan hasil pada satu masa. Tetapi dengan menggunakan garpu dalam kod C, jika fungsi ini mengembalikan nilai yang kurang dari 0, itu berarti bahawa panggilan fungsi ditamatkan.

Pertimbangkan fail baru yang mempunyai dua perpustakaan di tajuk masing-masing. Di sini syarat digunakan di mana kita telah menggunakan pernyataan if-else. Dalam program utama, dinyatakan bahawa jika nilai garpu adalah nilai –ive, ia akan memaparkan pesan bahawa id prosesnya gagal dan tidak akan diperoleh. Sekiranya keadaannya salah, maka penyusun akan berpindah ke bahagian keadaan yang lain. Di bahagian ini, id proses diperoleh, maka kita akan memaparkan ID proses ini dan memaparkan pesan bahawa ID proses diperoleh. Di sini kita akan memetik pernyataan if-else kod sumber.

Sekali lagi, kumpulkan kod dan kemudian jalankan.

./kod2

Hasilnya menunjukkan bahawa bahagian lain telah dijalankan dan akan mencetak id proses dan kemudian memaparkan mesej PID.

Contoh 4

Ini adalah contoh lain untuk menjelaskan konsep yang sama. Fungsi garpu () mengembalikan dua nilai yang berbeza. Dalam kes proses anak, nilainya adalah 0, yang akan dikembalikan. Pada masa yang sama, nilai dalam proses ibu bapa adalah ID proses anak baru.

Dalam contoh ini, keadaan if_else yang sama digunakan. Tetapi di sini, dua syarat terpakai. Membandingkan PID yang kurang daripada sifar dan yang lain sama dengan sifar. Sekiranya PID kurang dari sifar, maka ia akan menunjukkan mesej ralat. Manakala jika PID sama dengan sifar, itu bermaksud ia adalah proses anak, dan bahagian lain menunjukkan bahawa jika PID lebih besar daripada sifar, itu adalah proses induk.

Sekarang kompilasi dan jalankan kodnya.

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

Dari hasilnya, kita dapat melihat bahawa bahagian lain dicetak terlebih dahulu bermaksud ID proses lebih besar daripada 0.

Contoh 5
Baiklah, ini adalah contoh terakhir di mana kami telah mencuba merangkum semua kod yang dinyatakan di atas untuk menjelaskan cara kerja fungsi ini. Kita juga boleh menggunakan gelung dengan fungsi garpu () untuk menggunakan fungsi getpid (). Kita boleh menggunakan gelung untuk membuat banyak proses anak. Di sini kita harus menggunakan nilai 3 dalam gelung.

Sekali lagi kita harus menggunakan pernyataan bersyarat dalam kod. Gelung untuk bermula dari satu dan berulang sehingga 3rdgiliran.

Sekarang simpan fail dan laksanakan. Terdapat kaedah mudah lain untuk menyusun dan melaksanakan kod hanya dalam satu perintah. Itu dia.

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

Sekarang bergerak ke arah output kod. Id proses ibu bapa adalah sama dalam semua proses anak. Ini bermaksud semua proses ini milik satu ibu bapa. Proses-proses ini dilaksanakan satu demi satu yang lain kerana gelung terhad kepada 3. Hanya 3 lelaran yang akan dilakukan.

Kesimpulannya

Artikel ini mengandungi pengetahuan asas, dan fungsi getPID () dalam perintah Linux. Id unik diberikan kepada setiap proses melalui fungsi ini.