繁体   English   中英

程序收到SIGTSTP信号时会发生什么

[英]What happens when a program receives SIGTSTP signal

我用C语言编写了一个程序,需要处理ctrl + z和相应的信号SIGTSTP和SIGCONT。

收到信号后,我的变量和过程会怎样?
通过信号处理程序signal(SIGCONT, &sig_handler);处理signal(SIGCONT, &sig_handler); ,我的流程会怎样?

至少有三种可能的情况:

  • 该进程当前正在用户空间中运行:

    在这种情况下,该进程将被抢占(类似于多任务处理时其时间片用完的方式),直到恢复后才考虑重新安排该进程。

  • 该进程当前正在系统调用中等待:

    通常,系统调用会中断,并且直到恢复后才考虑对该进程进行调度。 恢复后,某些系统调用将返回-EINTR ,必须重新启动。 某些系统调用会自动重新启动。

  • 进程正在等待磁盘(状态D),例如,等待缓冲区/页面进入:

    该信号被设置为挂起,但直到操作完成才传递。 之后,它与上述情况之一相同。

通常,所有这些对于过程本身都是相当透明的。

这与SIGTSTPSIGSTOP的默认操作相同(但是不能捕获或忽略后者)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM