Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk melaksanakan proses zombi dan anak yatim dalam satu program C?

Bagaimana untuk melaksanakan proses zombi dan anak yatim dalam satu program C?

WBOY
WBOYke hadapan
2023-08-25 16:21:061308semak imbas

Bagaimana untuk melaksanakan proses zombi dan anak yatim dalam satu program C?

Dalam bahagian ini, kita akan belajar cara melaksanakan proses zombi dan anak yatim dalam satu program dalam C/C++. Sebelum sampai ke intinya, mari kita fahami dahulu apa itu proses zombi dan proses yatim.

Proses Zombie

Proses Zombie merujuk kepada proses yang telah selesai pelaksanaan tetapi masih mempunyai ruang yang tinggal. Kemasukan dalam jadual proses. Proses zombi biasanya berlaku dalam proses anak kerana proses induk masih perlu membaca status keluar proses anaknya. Sebaik sahaja ini dilakukan menggunakan panggilan sistem tunggu, proses zombie dihapuskan daripada jadual proses. Ini dipanggil proses zombi penuaian.

Proses Yatim

Proses yatim ialah proses yang masih berjalan walaupun proses induknya telah ditamatkan atau selesai. Sesuatu proses mungkin menjadi yatim secara sengaja atau tidak sengaja.

Proses anak yatim yang sengaja akan berjalan di latar belakang tanpa sebarang sokongan manual. Ini biasanya dilakukan untuk memulakan perkhidmatan yang berjalan selama-lamanya atau untuk menyelesaikan kerja yang berjalan lama tanpa disedari oleh pengguna.

Proses anak yatim dibuat secara tidak sengaja apabila proses induknya ranap atau ditamatkan. Gunakan mekanisme kumpulan proses untuk mengelakkan proses anak yatim yang tidak disengajakan.

Kini dalam kod di bawah kita akan melaksanakan proses zombie dan proses anak yatim secara serentak. Di sini kita mempunyai proses induk, yang mempunyai proses anak, dan proses anak ini mempunyai proses anak yang lain. Jika kawalan kami dimasukkan ke dalam proses anak, maka kami akan menghentikan pelaksanaan selama 5 saat supaya ia dapat menyelesaikan proses induk. Oleh itu proses anak menjadi proses yatim. Proses cucu kemudiannya akan ditukar menjadi proses zombi. Proses cucu menyelesaikan pelaksanaan apabila proses induknya (anak proses utama) tidur selama 1 saat. Oleh itu, proses cucu tidak akan memanggil tamat dan kemasukannya akan wujud dalam jadual proses.

Contoh kod

#include <stdio.h>
#include <unistd.h>
int main() {
   int x = fork(); //create child process
   if (x > 0) //if x is non zero, then it is parent process
      printf("Inside Parent---- PID is : %d</p><p>", getpid());
   else if (x == 0) { //for chile process x will be 0
      sleep(5); //wait for some times
      x = fork();
      if (x > 0) {
         printf("Inside Child---- PID :%d and PID of parent : %d</p><p>", getpid(), getppid());
         while(1)
            sleep(1);
         printf("Inside Child---- PID of parent : %d</p><p>", getppid());
      }else if (x == 0)
      printf("Inside grandchild process---- PID of parent : %d</p><p>", getppid());
   }
   return 0;
}

Output

soumyadeep@soumyadeep-VirtualBox:~$ ./a.out
Inside Parent---- PID is : 3821
soumyadeep@soumyadeep-VirtualBox:~$ Inside Child---- PID :3822 and PID of parent : 686
Inside grandchild process---- PID of parent : 3822
soumyadeep@soumyadeep-VirtualBox:~$

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan proses zombi dan anak yatim dalam satu program C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam

Artikel berkaitan

Lihat lagi