我想写一个'僵尸创造者'和'僵尸终结者'。重点是我想在一个部分创建僵尸并在代码的其他部分终止它们。我正在使用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,但这不是重点。我正在寻找某种遥控器。那可能吗?长时间睡觉他可能是一个解决方案吗?
答案 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。您可以将它们保存在一个数组中,将它们写入一个文件,或者将它们写入管道,并且在您需要之前不要“解开”另一端。