13 October 2011

Conocer en número de nucleos en Unix [C]

by kenkeiras — Categories: C, GNU/linux, unix3 Comments

Muy rápidamente…

El número de nucleos de CPU se puede ver a través del directorio “/sys/devices/system/cpu/”, así que aprovechando que en Poesia binaria hay un post sobre como leer directorios en C… aquí está un código que lee, la idea sería usar la función para usar el número correcto de hilos/procesos [getcpus.c]

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <dirent.h>

#define CPU_PATH "/sys/devices/system/cpu/"

int getCores(){
    DIR *dir;
    struct dirent* it;
    int count = 0;
    int i, isCpu;

    dir = opendir(CPU_PATH);
    if (dir == NULL){
        exit(1);
    }
    while((it = readdir(dir)) != NULL){
        if (strncmp(it->d_name, "cpu", 3) == 0){
            isCpu = 1;
            for(i = 3; it->d_name[i] != '\0'; i++){
                if ((it->d_name[i] < '0')||(it->d_name[i] > '9')){
                    isCpu = 0;
                    break;
                }
            }
            count += isCpu;
        }
    }
    closedir(dir);
    return count;
}

int main(int argc, char **argv){
    printf("Encontrado(s): %i nucleo(s)\n", getCores());
    return 0;
}

Hasta la próxima

3 Comments »

  1. [...] (14/10/2011): En el blog código para llevar encontramos un ejemplo de cómo utilizar este código para encontrar el número de núcleos de [...]

  2. ¡Muy interesante! Te puse un link al post.

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

© 2012 Código para llevar All rights reserved - Wallow theme v0.46.5 by ([][]) TwoBeers - Powered by WordPress - Have fun!