У меня есть файл sysinfo.cc от gutil, который идентичен этому: https://github.com/cloudera/kudu/blob/master/src/kudu/gutil/sysinfo.cc#L248 Я хотел бы знать, правильно ли работает функция InitializeSystemInfo () для Linux, учитывая, что я не слишком знаком с C ++.
Я не могу найти закрывающую скобку для этого оператора do в строке 248, так что он все равно будет правильно вычислять numcpus?
do { // we'll exit when the last read didn't read anything
// Move the next line to the beginning of the buffer
const int oldlinelen = strlen(line);
if (sizeof(line) == oldlinelen + 1) // oldlinelen took up entire line
line[0] = '\0';
else // still other lines left to save
memmove(line, line + oldlinelen+1, sizeof(line) - (oldlinelen+1));
// Terminate the new line, reading more if we can't find the newline
char* newline = strchr(line, '\n');
if (newline == NULL) {
const int linelen = strlen(line);
const int bytes_to_read = sizeof(line)-1 - linelen;
CHECK_GT(bytes_to_read, 0); // because the memmove recovered >=1 bytes
chars_read = read(fd, line + linelen, bytes_to_read);
line[linelen + chars_read] = '\0';
newline = strchr(line, '\n');
}
if (newline != NULL)
*newline = '\0';