当前位置: 首页 > 面试题库 >

SIGKILL之后如何进行清理?

祁飞扬
2023-03-14
问题内容

我正在使用共享内存的程序上工作。所述程序的多个实例将连接到现有程序或重新创建它,并在没有其他进程的情况下将其返回给OS,或者只是将其分离并终止。我想到了使用一个简单的计数器来跟踪使用它的进程数。

我正在使用atexit()函数进行清理,但是afaik在收到SIGKILL信号后,进程将不会进行任何清理,因此,如果这些进程中的任何一个不能正常终止,我可能永远无法清理内存

有没有办法指定即使在SIGKILL信号之后也要做什么?我可能会写一些类似于计时器的机制来检查进程是否仍然存在,但是如果有其他方法,我真的很想避免这种情况。


问题答案:

不,您的应用程序不能以任何方式捕获SIGKILL-如果可以,则应用程序可以忽略它,这将违背其目的。



 类似资料:
  • 我正在为如何处理这个特殊案件而挣扎。我知道我可以通过链式回调来解决这个问题,但它看起来就像是promise的海报: 我有一个父方法,它需要按顺序执行三个异步操作(特别是从用户那里得到确认)。我们称它们为func1 func2和func3。现在,我可以让每一个都返回一个promise,并将其链接起来,这一切都非常有效。我遇到的问题是: func1需要设置一个状态,等待链的其余部分运行,然后取消设置该

  • 问题内容: 在我的项目中,我必须在所有测试之前进行一些存储库设置。这是使用一些棘手的静态规则完成的。但是,在所有测试之后,我不知道如何进行清理。我不想保留一些不可思议的静态数字来引用所有测试方法的编号,我应该一直保持这种状态。 最受赞赏的方法是添加一些将在所有测试后调用的侦听器。JUnit4中已经有用于它的任何接口吗? 编辑:这与@BeforeClass和@AfterClass无关,因为我必须知道

  • 问题内容: 我需要清理生产服务器中的PostgreSQL数据库。我是新来的。所以任何人都知道PostgreSQL的步骤,请指导我。 我认为在生产服务器中提高PostgreSQL的性能非常有用。 问题答案: 连接到数据库并发出以下命令:“ VACUUM”。这导致可以在正常生产使用期间使用的“惰性模式”运行。建议您实际将其作为“真空分析”来调用,这也会更新统计信息。 如果要查看大量详细信息,可以在控制

  • 我在这里看到了:在Maven/Surefire中,什么是清理单元测试后的好方法,无论测试是否通过?但这帮不了我。我可能错误地配置了failsafe和/或surefire。 我已经将jUnit声明为依赖项 我在构建中有故障安全插件: 我没有任何遵循*IT命名约定的集成测试,只有遵循*Test命名约定的jUnit测试。我只是试图使用故障安全作为一种方法来确保我的清理完成。我试过船长是真的,我试过评论这

  • 我需要运行一个巨大的过程,这将运行10分钟左右。我最大化了< code>max_execution_time,但是在我的错误日志中,我得到了一个SIGTERM,然后是一个SIGKILL。 我读了一些关于SIGTERM和SIGKILL的文章,说它们来自于守护进程,但我没有找到阻止它发生的方法。我只需要禁用它一晚。

  • 问题内容: 我想告诉Node.js无论出于何种原因(+ ,异常或任何其他原因)总是在退出之前总是做一些事情。 我尝试了这个: 我开始了该过程,将其杀死,但没有任何反应。我再次启动它,按+ ,仍然没有任何反应… 问题答案: 更新: 您可以注册一个处理程序,并在任何其他情况下(或未处理的异常)进行调用