예제 #1
0
int uptime_main(int argc, char *argv[])
{
    float up_time, idle_time;
    char up_string[100], idle_string[100], sleep_string[100];
    int elapsed;

    FILE* file = fopen("/proc/uptime", "r");
    if (!file) {
        fprintf(stderr, "Could not open /proc/uptime\n");
        return -1;
    }
    if (fscanf(file, "%f %f", &up_time, &idle_time) != 2) {
        fprintf(stderr, "Could not parse /proc/uptime\n");
        fclose(file);
        return -1;
    }
    fclose(file);

    elapsed = elapsedRealtime();
    if (elapsed < 0) {
        fprintf(stderr, "elapsedRealtime failed\n");
        return -1;
    }

    format_time(elapsed, up_string);
    format_time((int)idle_time, idle_string);
    format_time((int)(elapsed - up_time), sleep_string);
    printf("up time: %s, idle time: %s, sleep time: %s\n", up_string, idle_string, sleep_string);

    return 0;
}
예제 #2
0
int uptime_main(int argc, char *argv[])
{
    float up_time, idle_time;
    char up_string[100], idle_string[100], sleep_string[100];
    int elapsed;
    struct timespec up_timespec;

    FILE* file = fopen("/proc/uptime", "r");
    if (!file) {
        fprintf(stderr, "Could not open /proc/uptime\n");
        return -1;
    }
    if (fscanf(file, "%*f %f", &idle_time) != 1) {
        fprintf(stderr, "Could not parse /proc/uptime\n");
        fclose(file);
        return -1;
    }
    fclose(file);

    if (clock_gettime(CLOCK_MONOTONIC, &up_timespec) < 0) {
        fprintf(stderr, "Could not get monotonic time\n");
return -1;
    }
    up_time = up_timespec.tv_sec + up_timespec.tv_nsec / 1e9;

    elapsed = elapsedRealtime();
    if (elapsed < 0) {
        fprintf(stderr, "elapsedRealtime failed\n");
        return -1;
    }

    format_time(elapsed, up_string);
    format_time((int)idle_time, idle_string);
    format_time((int)(elapsed - up_time), sleep_string);
    printf("up time: %s, idle time: %s, sleep time: %s\n", up_string, idle_string, sleep_string);

    return 0;
}