gpt4 book ai didi

linux - kill -SIGCONT 不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 11:11:36 24 4
gpt4 key购买 nike

我想使用 SIGTSTP(或 SIGSTOP)暂停一个进程,稍后使用 SIGCONT 恢复它。 SIGTSTP 和 SIGSTOP 按预期工作,但 SIGCONT 有时不会唤醒已停止的进程。

例如:SIGCONT 与 find 命令配合使用效果很好:

查找/
kill -SIGSTOP $pid_of_the_find_proc
[1]+ 停止查找/
kill -SIGCONT $pid_of_the_find_proc
//发现/唤醒

但是当我用 sleep 命令测试它时,它就失败了。

sleep 100
kill -SIGSTOP $pid_of_the_sleep_proc
[1]+ 停止 sleep 100
kill -SIGCONT $pid_of_the_sleep_proc
//发送 SIGCONT 信号后没有任何反应

但是,bash 的内置命令 fg 可以很好地 sleep

sleep 100
kill -SIGSTOP $pid_of_the_sleep_proc
[1]+ 停止 sleep 100
kill -SIGCONT $pid_of_the_sleep_proc
图表 1
// sleep 进程在 fg 命令后醒来

所以我的问题是,为什么 kill -SIGCONT 对 sleep 不起作用,而为什么 fg 起作用。顺便说一句,我在我的 Ubuntu 13.10 x86-64 电脑上运行这些测试。提前致谢。

最佳答案

你怎么知道发送SIGCONT不会唤醒 sleep 进程?你期望发生什么?fg 命令唤醒进程并将其带到前台(因此是 fg)。bg 命令唤醒进程并将其置于后台(因此是 bg)。

在实现细节上,shell 在前台使用等待进程,而在后台不使用等待进程。

因此,在 SIGCONT 之后,您的 sleep 可能会继续在后台运行。您可以在发送 SIGCONT 后等待 100 秒,然后 sleep 命令应该终止并且您应该收到通知(立即或在按回车键后,具体取决于您的 shell 的配置)。

关于linux - kill -SIGCONT 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22865261/

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