CPP код chrony io зависает на одном компьютере, но не на другом - PullRequest
0 голосов
/ 05 августа 2020

Я использую один и тот же код cpp на двух одинаковых компьютерах, но он зависает только на одном компьютере. Я заметил, что он зависает только тогда, когда я добавляю приведенный ниже кодовый вызов в одну из функций. Понятия не имею почему. Я даже переписал код, чтобы попытаться исправить, но безуспешно. Что еще более странно, так это то, что он будет зависать в случайное время / в случайных местах (во время основного или во время разговора и т. Д. c.). Есть идеи, почему?

Я безуспешно пытался искать здесь. Это не архитектура компьютера, и я не верю, что есть утечки памяти, поскольку он отлично работает на другом компьютере (он идентичен, кроме местоположения и IP-адреса)

(Это не мое {и} размещение. I ' m просто по какой-то причине не удалось вставить его как код)

void ntpSync(){

FILE *jitter;
char line[41];
char *start;    

jitter = popen("chronyc sources |cat", "r");

fgets(line,41,jitter);
fgets(line,41,jitter);
fgets(line,41,jitter);
fgets(line,41,jitter);
fgets(line,41,jitter);
fgets(line,41,jitter);
fgets(line,41,jitter);

start = strchr(line,'+');

myfile<<start;

pclose(jitter);
}

раньше он был более элегантным и был таким (позже я смотрел на другое значение). В любом случае, оба зависают на одном компьютере, а не на другом.

void ntpSync(){

FILE *fp;
char var[40];
char *nextSys;
char *sysTime;

fp = popen("chronyc tracking |cat", "r");

while (!feof(fp))
{
    while(fgets(var,40, fp)!=NULL)
    {   
        
        if(strncmp(var,"System time",11)==0)
        {
            nextSys = strtok(var,": ");
            while(nextSys != NULL)
            {
                if(strspn(nextSys,"seconds")==7)
                {           
                    myfile<<sysTime<<",";
                    break;
                }
                sysTime=nextSys;
                nextSys=strtok(NULL,": ");
                
            }
        }
}

Может быть, мой хрони на одном компьютере испортился, и мне следует его переустановить? Вызов «chrony c sources» работает на обоих терминалах и заполняет мой csv в моем коде.

...