僵尸进程是一个计算机程序的实例,尽管已完成执行,但仍保留进程表记录。由于处理子进程的方式,此类已失效的进程通常与Unix®和其他类似操作系统关联。当子进程完成执行时,父进程通常负责将其从进程表中删除。通常不可能使...
僵尸进程是一个计算机程序的实例,尽管已完成执行,但仍保留进程表记录。由于处理子进程的方式,此类已失效的进程通常与Unix®和其他类似操作系统关联。当子进程完成执行时,父进程通常负责将其从进程表中删除。通常不可能使用kill命令直接删除僵尸进程,但如果操作员使用signal child(SIGCHLD)通知,则通常可以让父进程将其删除。否则,可以通过终止parent.Man holding computer Zombie进程是一个隐喻性的描述性术语,指的是活死人。在Unix®和类似操作系统中,失效的进程可以被视为类似于僵尸,因为它们在不再执行其预期功能的情况下仍保持进程表的存在。当进程完成时执行它有时被称为死亡,而操作系统恢复其进程表分配的方式可能被称为收获(reaping),僵尸的父进程在技术上应该收获它的子进程,尽管这种情况并不总是发生。在某些情况下,僵尸进程的存在可能是有意的,甚至是需要的。子进程停止执行后,父进程可能需要稍后运行同一程序的另一个实例。如果尚未从进程表中删除僵尸,新的子进程将不会被分配与旧子进程相同的标识(ID)。某些程序可能会从中受益,甚至需要这种区分。如果父进程没有执行wait命令来捕获它所负责的僵尸,可能会强制执行这个问题,这通常是通过kill命令并向父进程发送SIGCHLD信号来完成的如果一切正常,接收此信号的父进程应获取其僵尸子进程,以便其ID和进程表位置可以重用。在某些情况下,父进程可能会忽略SIGCHLD信号。如果发生这种情况,并且操作员仍希望清除进程表,父进程可能会被终止。父进程创建的任何僵尸都将被分配为init进程的子进程。由于init会定期在其子进程上启动wait命令,它负责的任何僵尸最终都将从进程表中删除
-
发表于 2020-08-06 07:28
- 阅读 ( 1077 )
- 分类:电脑网络