What API do I call to get the system uptime?

后端 未结 5 1076
面向向阳花
面向向阳花 2020-12-02 20:22

I would like to get the system uptime from within a C application running on a linux-based system. I don\'t want to call uptime(1) and parse the output, I\'d like to call t

5条回答
  •  一整个雨季
    2020-12-02 21:06

    #include 
    #include 
    #include 
    #include 
    #include 
    #include 
    #include 
    
    int main() {
      struct sysinfo sys_info;
      struct group* grp;
    
        gid_t gid;
        char** users;
    
      int days, hours, mins, x = 1;
    
      system("clear");  
      printf("\033[4;40m            Systems information                   \033[0;m \n");
      if(sysinfo(&sys_info) != 0)
        perror("sysinfo");
    
      days = sys_info.uptime / 86400;
      hours = (sys_info.uptime / 3600) - (days * 24);
      mins = (sys_info.uptime / 60) - (days * 1440) - (hours * 60);
    
      printf("\033[1;33m  Uptime: \033[0;36m %ddays, %dhours, %dminutes, %ldseconds \033[0;m \n",
                          days, hours, mins, sys_info.uptime % 60);
    
      printf("\033[1;33m  Load Avgs: \033[0;m 1min(%ld) 5min(%ld) 15min(%ld) \n",
              sys_info.loads[0], sys_info.loads[1], sys_info.loads[2]);
    
      printf("\033[1;33m  Total Ram: \033[0;m %ldk \t Free: %ldk \n", sys_info.totalram / 1024, sys_info.freeram / 1024);
      printf(" \033[1;33m Shared Ram: \033[0;m %ldk ", sys_info.sharedram / 1024);
      printf("  Buffered Ram: %ldk \n", sys_info.bufferram / 1024);
      printf("\033[1;33m  Total Swap: \033[0;m %ldk \t Free swap: %ldk \n", sys_info.totalswap / 1024, sys_info.freeswap / 1024);
      printf("\033[1;33m  Total High Memory: \033[0;m %ldk  Free high memory: %ldk \033[0;m \n", sys_info.totalhigh / 1024, sys_info.freehigh / 1024);
      printf(" \n");
      printf("\033[1;44m Total Number of processes: %d \033[0;m \n", sys_info.procs);  
      gid = getgid();
        printf("  Group ID: \033[031m %d", gid);
        if((grp = getgrgid(gid)) == NULL ) return 1;
        printf("\033[0;m Group %s ", grp->gr_name );
        printf("\n  Users in your group ");
        for( users = grp->gr_mem; *users != NULL; users++,++x ); printf( "%d", ++x);     
        if(strcmp(grp->gr_passwd,"x") == 0) printf("  Password is protected by shadow file. \n");
        else printf("Password: %s ", grp->gr_passwd);   
    
        return 0;
    }
    

提交回复
热议问题