2017-02-19 22 views
3

我試圖一次寫入終端一行,但它只是打印整個事情沒有睡覺。它適用於我使用睡眠(1)。我只是不理解nanosleep是如何工作的?爲什麼C nanosleep()不在這裏睡覺?

void                   
display_all(int fdin, int fdout)            
{                    
    struct timespec tm1,tm2;             

    tm1.tv_sec = 0;                
    tm1.tv_nsec = 1000000000L;                            
    while (display_line(fdin, fdout) == 80)          
    {                   
     nanosleep(&tm1,&tm2);             
    }                   

} 

display_line正在使用函數寫入來寫入STDOUT。

+6

讀[手冊頁](https://linux.die.net/ man/2/nanosleep)總是有幫助:「毫微秒字段的值必須在0到999999999之間」。 – kaylum

+0

不要使用nanosleeps進行大睡:準確但會吃很多CPU,因爲它使用校準的活動CPU循環。不適合長時間延遲。 –

+0

哇。這對我的感謝。是的@ Jean-FrançoisFabre我只是測試如何使用它,因爲我必須做一個速度修改器來提高它的讀取速度或降低速度。 – WizKiz

回答