linux中的sleep为库调用(library calls),其声明文件为unistd.h。

unsigned int sleep(unsigned int seconds);

如果进程或者线程调用sleep请求的休眠的时间seconds过去,那么会返回0;如果休眠期间被信号中断,那么返回剩余的休眠时间。

 

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

void sig_handler(int num)
{
    printf("receive %d signal\n", num);
}

// 在休眠时间20s内,键入中断信号(ctrl+c)
int t_main() { int time = 20; signal(SIGINT, sig_handler); printf("enter sleep\n"); sleep(time); printf("sleep over\n"); return 0; }
/*

./xsleep
enter sleep
^Creceive 2 signal
sleep over

*/

int main()
{
    int time = 20;
    signal(SIGINT, sig_handler);
    printf("enter sleep\n");
    do{
        time = sleep(time);
    }while (time > 0);

    printf("sleep over\n");
    return 0;
}

/*

./xsleep
enter sleep
^Creceive 2 signal
^Creceive 2 signal
^Creceive 2 signal
^Creceive 2 signal
^Creceive 2 signal
^Creceive 2 signal
^Creceive 2 signal
sleep over

*/

 

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-01-27
  • 2022-01-09
  • 2021-10-18
  • 2021-07-09
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-01-03
  • 2021-08-27
  • 2021-08-01
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案