zoukankan      html  css  js  c++  java
  • sleep()函数在Ubuntu 20.04+WSL1不起作用

    今天在写程序的时候需要使用sleep函数,但是每次调用都不能将程序休眠,查阅资料可知:

    在WSL1中的Ubuntu 20.04对于sleep()函数不能正确调用

    文章链接:https://blog.csdn.net/sinat_27953939/article/details/106473347?fps=1&locationNum=2

    因此,要解决这个问题,就需要微软来做了,但是正如文章所说,这个问题短期内估计不行了。

    解决方法是,将WSL1更新到WSL2,这就需要开启Hyper-V,因此会导致大多安卓模拟器不能运行。

    (如何从WSL1更新到WSL2:https://docs.microsoft.com/zh-cn/windows/wsl/install-win10

    因为我只要在程序中进行倒计时,我的解决方法是使用这个函数来代替sleep的功能(这个方法不好!!!)

    #include <stdio.h>
    #include <unistd.h>
    #include <sys/time.h>
    #include <time.h>
    void timeoclock(int second)
    {
        //     for (int i = second; i > 0; i--)
        //     {
        //         printf("%d 
    ", i);
        //         sleep(1);
        //     }
        time_t start;
        start = time(NULL);
        while (1)
        {
            if (time(NULL) - start == second)
                break;
        }
    }
    View Code

    查阅资料,我认为这个替代方法很好

    下面给上链接https://blog.csdn.net/wenqiang1208/article/details/71054707

    这个是原作者的代码

    #include<stdio.h>
    #include<sys/types.h>
    #include<unistd.h>
    #include<signal.h>
    
    void hander(int sig)
    {}
    
    //解决竞态问题
    int mysleep(int seconds)
    {
        struct sigaction act,oldact;
        sigset_t mask,omask,susmask;
        act.sa_handler = hander;
        sigemptyset(&act.sa_mask);
        act.sa_flags = 0;
        sigaction(SIGALRM,&act,&oldact);
        sigemptyset(&mask);
        sigaddset(&mask,SIGALRM);
        sigprocmask(SIG_BLOCK,&mask,&omask);
    
        alarm(seconds);
        susmask = omask;
        sigdelset(&susmask,SIGALRM);
        sigsuspend(&susmask);
    
        int _time = alarm(0);
        sigaction(SIGALRM,&oldact,NULL);
        sigprocmask(SIG_SETMASK,&omask,NULL);
        return _time;
    }
    
    int main()
    {
        while(1)
        {
            mysleep(5);
            printf("I am sleeping....
    ");
        }
    
        return 0;
    }
  • 相关阅读:
    CMDB整体项目整理(3)
    聊聊restful和restframework
    mysql笔记(2)
    mysql笔记(1)
    cmdb整体项目梳理(2)
    DOM4J解析XML
    JAXP进行DOM和SAX解析
    XML
    CSS案例
    CSS基础总结
  • 原文地址:https://www.cnblogs.com/rogunt/p/13060033.html
Copyright © 2011-2022 走看看