簡體   English   中英

使用信號從睡眠中喚醒進程

[英]Wake up a process from sleep with a signal

我讓一個進程進入睡眠狀態。 當一個進程進入睡眠狀態時,它被標記為一個特殊的 state 並從調度程序的運行隊列中刪除,我想通過命令行發送信號來喚醒它,我該怎么做。 假設我有這個使用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;
}

將信號處理程序分配給信號,然后發送該信號。

#include <unistd.h> // sleep
#include <stdio.h>
#include <signal.h>

void do_nothing(int ignore) {
}

int main(void)
{
    signal(SIGUSR1, do_nothing);
    printf("Remaining = %d\n", sleep(100)); // i.e the return value after 5 seconds will be 95
    return 0;
}
imac:barmar $ ./testsleep &
[1] 2179
imac:barmar $ kill -USR1 %1
Remaining = 95
[1]+  Done                    ./testsleep

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM