2017-02-19 6 views
3

Я пытаюсь писать на терминал по одной строке за раз, но он просто печатает все, не спать. Он работает, если я использую сон (1). Неужели я просто не понимаю, как нанооспутник должен работать?Почему 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 использует функцию write для записи в STDOUT.

+6

Чтение [справочную страницу] (https://linux.die.net/ man/2/nanosleep) всегда помогает: «Значение поля наносекунд должно находиться в диапазоне от 0 до 999999999». – kaylum

+0

не используют наносы для больших спальных мест: он точен, но ест много процессора, потому что он использует откалиброванные активные петли ЦП. Не подходит для длительной задержки. –

+0

ничего себе. Это сделало это для меня спасибо. и да @ Jean-FrançoisFabre Я просто тестировал, как использовать его, потому что мне нужно сделать модификатор скорости, чтобы увеличить скорость его чтения или уменьшить его. – WizKiz

ответ

Смежные вопросы