首页 > 解决方案 > 不允许程序杀死任何未关联的进程

问题描述

我目前正在学习如何使用系统调用,例如 fork、exec* 和 kill。如果其中一个 fork 调用失败,我有一项任务需要将 SIGKILL 发送到使用 fork 创建的所有父母的兄弟姐妹。所以我做了这样的事情:

for (int i = 0; i < numOfchilds; i++) {
  childs[i] = fork();
  if (childs[i] == -1)
    killAll(childs, i);
...

void killAll(pid_t childs, size_t numOfChilds) {
  for (int i = 0; i < numOfChilds; i++)
    kill(childs[i], SIGKILL);
}

但我搞砸了,不小心发送kill(-1, SIGKILL)并杀死了所有我能做到的进程。幸运的是,我没有丢失任何未保存的数据,但这kill -9 -1并不是注销的最佳做法。

所以。有什么办法可以限制我的程序杀死任何不属于它的进程,所以它只能杀死它用 fork 创建的一个?

标签: linuxunixforksystem-callskill

解决方案


推荐阅读