c - Usage of clock_gettime doesn't allow output redirection to file -


the following program increments variable i 100ms , prints value. problem doesn't print onto file when redirecting output terminal.

#include <stdio.h> #include <time.h>  struct timespec start={0,0}, end={0,0};  int main(void) {     double diff;      while(1) {         unsigned long = 0;         clock_gettime(clock_monotonic, &start);         {             ++i;             clock_gettime(clock_monotonic, &end);             diff = (((double)end.tv_sec + 1.0e-9*end.tv_nsec) - ((double)start.tv_sec + 1.0e-9*start.tv_nsec));         } while(diff < 0.1);          printf("i = %lu\n", i);     }     return 0; } 

i compile gcc counter.c -o counter , when run ./counter, values of i gets printed onto screen, when ./counter > file.out, there nothing in file. i've tried redirecting stderr 2> , ./counter > file.out 2>&1. if remove clock_gettime function, seems work fine. idea why happens , how circumvent it?

update: question more how printing screen (stdout) immediately, when redirected not immediate? using clock_gettime seems trigger buffer. if not redirection works fine.


Comments

Popular posts from this blog

angular - Is it possible to get native element for formControl? -

unity3d - Rotate an object to face an opposite direction -

javascript - Why jQuery Select box change event is now working? -