gpt4 book ai didi

c - kill会被一个信号打断吗?

转载 作者:行者123 更新时间:2023-12-02 06:46:16 27 4
gpt4 key购买 nike

例如,如果我使用 kill(C 库 signal.h 中的函数)向 child 发出 SIGINT 信号,是否会在 kill 函数返回之前捕获来自 child 的 SIGCHLD 信号?

最佳答案

虽然 kill 系统调用不可中断(至少根据 the man page ),仍然至少有两种情况 SIGCHLD 处理程序可以在函数返回:

  1. 如果您的进程中有另一个线程,内核甚至可以在 kill 系统调用返回您的第一个线程之前选择在那里运行信号处理程序。
  2. 您可能正在使用 libc 中的 kill 包装函数。信号处理程序可以在系统调用返回到它和它返回到您的代码之间运行。

所以如果你想确保在 kill 返回之前你没有得到 SIGCHLD,那么你需要使用 sigprocmaskkill 之前阻止它,直到您准备好为止。

关于c - kill会被一个信号打断吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61570026/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com