Advertisement
kirya_shkolnik

Приколы с работой всякими системными функциями

Nov 20th, 2022
853
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.90 KB | None | 0 0
  1. #include <unistd.h>
  2. #include <sys/socket.h>
  3. #include <stdio.h>
  4. #include <sys/utsname.h>
  5. #include <iostream>
  6. #include <time.h>
  7. #include <sys/sysinfo.h>
  8. #include <vector>
  9.  
  10.     using namespace std;
  11.     const int n = 500;
  12.     char Host[n];
  13.     char User[n];
  14.     char CWD[n];
  15.     utsname UTS[n];
  16.     time_t Time[n];
  17.     struct sysinfo Sys[n];
  18.  
  19. int main(int argc, char **argv) {
  20.     if(gethostname(Host, sizeof(Host)) == 0)
  21.         printf("|Hostname = %s\n", Host);
  22.  
  23.     if (getlogin_r(User, sizeof(User)) == 0)
  24.         printf("|Username = %s\n\n", User);
  25.  
  26.     printf("|Metrics:\n");
  27.     if (sysconf(_SC_ARG_MAX) != -1)
  28.         printf("  |ARG_MAX: %ld\n", sysconf(_SC_ARG_MAX)); // максимальная длина аргументов
  29.  
  30.     if (sysconf(_SC_CHILD_MAX) != -1)
  31.         printf("  |CHILD_MAX: %ld\n", sysconf(_SC_CHILD_MAX)); // количество одновременных процессов для одного идентификатора пользователя
  32.  
  33.     if (sysconf(_SC_VERSION) != -1)
  34.         printf("  |POSIX Version Date: %ld\n\n", sysconf(_SC_VERSION)); // Версия стандарта POSIX. Формат ГГГГММ
  35.  
  36.     if (uname(UTS) == 0){
  37.         printf("|OS DATA:\n"); // Информация о ОС из UTS (Тип данных содержащий в себе инфу о ОС)
  38.         printf("  |OS NAME: %s\n", UTS->sysname); // ИМЯ ОС
  39.         printf("  |NODE NAME: %s\n", UTS->nodename); // ИМЯ МАШИНЫ
  40.         printf("  |RELEASE: %s\n", UTS->release); // ВЫПУСК ОС
  41.         printf("  |VERSION: %s\n", UTS->version); // ВЕРСИЯ
  42.         printf("  |HARDWARE TYPE: %s\n\n", UTS->machine); // АРХИТЕКТОРА КОМАНД ПРОЦЕССОРА
  43.     }
  44.  
  45.  
  46.     if (time(Time) != 0)
  47.         printf("|Time: %ld\n", time(Time)); // Время в секундах от 1 января 70 года
  48.  
  49.     if (asctime(localtime(Time)) != "Thu Jan  1 00:00:00 1970")
  50.         printf("|Time: %s\n", asctime(localtime(Time)));
  51.  
  52.     if (getusershell() != NULL) // У нас в системе есть файл /etc/shells/ и там у нас лежат все возможные оболочки пользователя. Мы просто берем последнюю от туда и возвращаем сюда
  53.         printf("|User Shell: %s\n", getusershell()); // https://white55.ru/shells.html
  54.  
  55.     if (getcwd(CWD, sizeof(CWD)) != NULL) // getcwd - текущий рабочий каталог
  56.         printf("|Path: %s\n", getcwd(CWD, sizeof(CWD)));
  57.  
  58.     if (getpid() != 0)  // process id
  59.         printf("|PID: %d\n", getppid());
  60.  
  61.     if (sysinfo(Sys) == 0){ // sysinfo получает системную инфу, статистику
  62.         printf("|Free RAM(bytes): %lu/%lu\n", Sys->freeram,Sys->totalram);
  63.         printf("|Uptime: %ld\n", Sys->uptime);
  64.         printf("|Process: %d\n", Sys->procs);
  65.     }
  66.  
  67.  
  68.  
  69.     return 0;
  70. }
  71.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement