僵尸进程在代码中创建,并在另一部分中被杀死

时间:2012-11-30 00:25:55

标签: c linux process zombie-process

我想写一个'僵尸创造者'和'僵尸终结者'。重点是我想在一个部分创建僵尸并在代码的其他部分终止它们。我正在使用C.

示例:

create_zombie(); //let's say it's a spawn, using fork etc.

/* a houndred lines below */

kill_zombie(PID); // PID is determinated by user, I want to leave him the choice

我知道如何使用fork(),if ... else,但这不是重点。我正在寻找某种遥控器。那可能吗?长时间睡觉他可能是一个解决方案吗?

2 个答案:

答案 0 :(得分:1)

我正在假设Linux,但该过程在其他操作系统上应该类似。您想要查看kill()头文件中通常声明的signal.h函数。这将允许您从僵尸杀手发送信号到特定的PID。最简单的方法是向僵尸进程发送一个终止信号(SIGKILL)。 SIGKILL不能被抓住或忽略,并立即杀死进程。

如果您需要在僵尸进程中进行一些清理,可以使用signal()函数创建信号处理程序。这将允许您指定在进程收到信号时要调用的函数。此函数将实现清理代码,然后exit()

在linux上,你的shell应该有一个模仿kill()功能的kill命令。语法通常为kill -s 9 PID。这将向进程PID发送SIGKILL(信号编号9)。

我希望这个答案会让你朝着正确的方向前进。

答案 1 :(得分:0)

当你分叉一个进程时,fork会在子进程中返回0,而子进程在父进程中返回id。您可以将它们保存在一个数组中,将它们写入一个文件,或者将它们写入管道,并且在您需要之前不要“解开”另一端。