【发布时间】:2021-04-10 13:29:36
【问题描述】:
我让一个进程进入休眠状态。当一个进程进入睡眠状态时,它被标记为处于特殊状态并从调度程序的运行队列中删除,我想通过命令行发送信号来唤醒它,我该怎么做。假设我有这个使用sleep 100 秒的C 代码。
我需要发送什么信号才能唤醒它并使返回值成为从睡眠中剩余的秒数?
#include <unistd.h>
#include <stdio.h>
int main(void)
{
printf("Current Proc ID is: %d. Wake me Up!\n", getpid());
int time_remain = sleep(100);
printf("Time Remain of sleep: %d\n", time_remain);
return 0;
}
【问题讨论】:
-
这能回答你的问题吗? stackoverflow.com/questions/61494611/…
-
您需要设置一个信号来处置
SIG_IGN,然后发送该信号。 -
看起来
SIGCONT可以做到 (kill -CONT PID) — unix.stackexchange.com/questions/252507/… -
我也尝试过
SIGURG和SIGCHLD,因为它们的默认配置是SIG_IGN,但它们也不起作用。因此,您可能需要为信号建立一个实际的处理程序。