c 僵尸進程
僵尸進程 (Zombie process)
A process which has finished its execution but still has an entry in the process table to report to its parent process is known as a zombie process.
一個已經完成執行但仍在進程表中具有要報告給其父進程的條目的進程稱為僵尸進程 。
In the following code, you can see that the parent will sleep for 20 sec, so it will complete its execution after 20 sec. But, Child will finish its execution using exit() system call while its parent process has gone for sleep.
在下面的代碼中,您可以看到父級將睡眠20秒,因此它將在20秒后完成執行。 但是,Child將在其父進程進入睡眠狀態時使用exit()系統調用完成其執行。
After execution the child must report to its parent, So the child process entry has to be in the process table to report to its parent even after it has finished execution.
執行后,子級必須向其父級報告。因此,即使子進程條目已完成執行,也必須位于進程表中才能向其父級報告。
Note: fork() is a UNIX system call so following program will work only on UNIX based operating systems.
注意: fork()是UNIX系統調用,因此以下程序僅適用于基于UNIX的操作系統。
The following code will not produce any output. It is just for demonstration purpose.
以下代碼不會產生任何輸出。 它僅用于演示目的。
用C語言編寫僵尸程序 (Program for zombie process in C)
</ s> </ s> </ s>#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
int main()
{
// fork() creates child process identical to parent
int pid = fork();
// if pid is greater than 0 than it is parent process
// if pid is 0 then it is child process
// if pid is -ve , it means fork() failed to create child process
// Parent process
if (pid > 0)
sleep(20);
// Child process
else
{
exit(0);
}
return 0;
}
Reference: Zombie and Orphan Processes in C
參考: C語言中的僵尸和孤立進程
翻譯自: https://www.includehelp.com/c-programs/zombie-process.aspx
c 僵尸進程