0

我想写一个“僵尸创造者”和“僵尸终结者”。要点是我想在一部分中创建僵尸并在代码的另一部分中终止它们。我正在使用 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 来做到这一点,但这不是重点。我正在寻找某种遥控器。那可能吗?让他睡很长时间可以解决吗?

4

2 回答 2

1

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

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

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

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

于 2012-11-30T01:08:38.997 回答
0

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

于 2012-11-30T00:45:34.343 回答