linux下的信号处理问题

linux下的信号处理问题,linux,linux-kernel,kernel,signals,Linux,Linux Kernel,Kernel,Signals,如果有人能帮我找到以下有关linux中信号的问题的答案,我将不胜感激?进行了大量搜索,但未收到答复 信号(例如:SIGINT)是否会中断系统调用(例如:read()) )如果该进程的系统调用正在进行?或者它会等待系统调用完成并切换到用户模式来执行信号吗 若它被中断并且执行了信号处理程序中的步骤,它是否会重试该系统调用(若进程仍然未终止) 是否有可能以这样一种方式配置一个进程,即如果系统调用正在进行,则它(系统调用)将在执行信号之前完成 所有这些都在中得到了回答。几乎所有都在信号手册页中;对

如果有人能帮我找到以下有关linux中信号的问题的答案,我将不胜感激?进行了大量搜索,但未收到答复

  • 信号(例如:SIGINT)是否会中断系统调用(例如:read()) )如果该进程的系统调用正在进行?或者它会等待系统调用完成并切换到用户模式来执行信号吗

  • 若它被中断并且执行了信号处理程序中的步骤,它是否会重试该系统调用(若进程仍然未终止)

  • 是否有可能以这样一种方式配置一个进程,即如果系统调用正在进行,则它(系统调用)将在执行信号之前完成


  • 所有这些都在中得到了回答。几乎所有都在信号手册页中;对于#3-阻止程序大部分主循环的所有信号,取消阻止它们,然后重新阻止它们。这将形成一个“信号窗口”,在此期间您将收到所有未完成的信号。这肯定是一种反模式,但这取决于你已经为自己挖了多深的洞。。。。