⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dce_utils.c

📁 Ho Chi Minh City University of Technology Computer Science Department Distributed Computing E
💻 C
字号:
/***************************************Ho Chi Minh City University of Technology    Computer Science Department Distributed Computing Environment (DCE)Written by Nguyen Van Noi -59406114File dce_utils.c on Mon Nov  9 09:45:28 1998****************************************/#include <stdio.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <netdb.h>#include <ctype.h>#include <pwd.h>#include <signal.h>#include <unistd.h>#include <sys/stat.h>#include <fcntl.h>#include <termio.h>#include <sys/systeminfo.h>#include <sys/wait.h>#include <sys/resource.h>#include <sys/time.h>#include <sys/systeminfo.h>#include <sys/processor.h>void reaper (int);char *gethostarch (const char *hostname){  static char buf[64];  int omask = sighold (SIGALRM);  FILE *f;  if (hostname)    sprintf (buf, "rsh %s  uname -p ", hostname);  else    strcpy (buf, "uname -p");  if (!(f = popen (buf, "r")))    {      sigrelse (omask);      return NULL;    }  sleep (2);  fgets (buf, 64, f);  pclose (f);  buf[strlen (buf) - 1] = 0;  sigrelse (omask);  return buf;}u_longgethostaddr (const char *s){  char buf[256];  struct hostent *p;  struct in_addr *pin;  if (!s)    gethostname (buf, 256);  else    strcpy (buf, s);  if (isdigit (buf[0]))    {      return inet_addr (buf);    }  else    {      if (!(p = gethostbyname (buf)))	return -1;      pin = (struct in_addr *) (p->h_addr_list[0]);      return pin->s_addr;    }  return -1;}u_longgetmyaddr (){  static u_long myaddr;  if (!myaddr)    myaddr = gethostaddr (NULL);  return myaddr;}uid_tgetuserid (const char *s){  struct passwd *p = getpwnam (s);  return p ? p->pw_uid : (-1);}char *ascaddr (u_long u){  static char buf[50];  struct hostent *p;  struct in_addr in;  in.s_addr = u;  strcpy (buf, inet_ntoa (in));  p = gethostbyaddr ((char *) &u, sizeof (u), AF_INET);  sprintf (buf, "%14s (%s)", p->h_name, inet_ntoa (in));  return buf;}char *ascaddrip (u_long u){  struct in_addr in;  in.s_addr = u;  return inet_ntoa (in);}char *ascname (u_long u){  struct hostent *p;  struct in_addr in;  in.s_addr = u;  p = gethostbyaddr ((char *) &u, sizeof (u), AF_INET);  return p ? p->h_name : NULL;}char *ascuserid (uid_t i){  static char buf[100];  struct passwd *p = getpwuid (i);  sprintf (buf, "%5d %s %s ", i, p->pw_name, p->pw_gecos);  return buf;}intIsFileExist (const char *s){  FILE *f = fopen (s, "r");  if (f)    {      fclose (f);      return 1;    }  return 0;}char *strstandard (char *s){  char *p = s, *p1 = s;  int b = 0;  while (*p)    {      if (*p == '\n')	break;      if (!b)	{	  if ((*p != ' ') && (*p != '\t'))	    {	      *p1++ = *p;	      b = 1;	    }	}      else	{	  if ((*p == ' ') || (*p == '\t'))	    {	      *p1++ = ' ';	      b = 0;	    }	  else	    {	      *p1++ = *p;	      b = 1;	    }	}      p++;    }  *p1 = 0;  return s;}char *sysinfo_hostarch (){  static int i;  static char buf[20];  if (i)    return buf;  buf[0] = 0;  sysinfo (SI_ARCHITECTURE, buf, 20);  i++;  return buf;}voiddce_signal (){  signal (SIGKILL, SIG_IGN);  signal (SIGABRT, SIG_IGN);  signal (SIGTERM, SIG_IGN);  signal (SIGTSTP, SIG_IGN);  signal (SIGTTIN, SIG_IGN);  signal (SIGTTOU, SIG_IGN);  signal (SIGINT, SIG_IGN);  signal (SIGQUIT, SIG_IGN);  signal (SIGUSR1, SIG_IGN);  signal (SIGUSR2, SIG_IGN);  signal (SIGIOT, SIG_IGN);  signal (SIGHUP, SIG_IGN);  signal (SIGCHLD, reaper);}voidreaper (int n){  int status, pid;  while ((pid = wait3 (&status, WNOHANG, (struct rusage *) 0)) > 0);}intdce_diamon (){  int i, n;  n = fork ();  if (n < 0)    return 0;  if (n)    exit (0);  for (n = getdtablesize () - 1; i >= 0; --i)    close (i);  n = open ("dev/tty", O_RDWR);  ioctl (n, TIOCNOTTY, 0);  close (n);  chdir ("/");  umask (027);  setpgrp ();  n = open ("/dev/null", O_RDWR);  dup (n);  dup (n);  dce_signal ();  return 1;}voidsysteminfo (){#define len 256  char buf[len];  processor_info_t infop;  fprintf (stderr, "\nSYSTEM INFORMATION\n\n");  fprintf (stderr, "Hostname %s\n", ascaddr (getmyaddr ()));  sysinfo (SI_SYSNAME, buf, len);  fprintf (stderr, "System name   : %s\n", buf);  sysinfo (SI_RELEASE, buf, len);  fprintf (stderr, "Release       : %s\n", buf);  sysinfo (SI_VERSION, buf, len);  fprintf (stderr, "Version       : %s\n", buf);  fprintf (stderr, "XOpen Version : %d \n", sysconf (_SC_XOPEN_VERSION));  sysinfo (SI_MACHINE, buf, len);  fprintf (stderr, "Machine       : %s\n", buf);  sysinfo (SI_ARCHITECTURE, buf, len);  fprintf (stderr, "Architecture  : %s\n", buf);  sysinfo (SI_PLATFORM, buf, len);  fprintf (stderr, "Platform      : %s\n", buf);  sysinfo (SI_SRPC_DOMAIN, buf, len);  fprintf (stderr, "RPC Domain    : %s\n", buf);  processor_info (0, &infop);  fprintf (stderr, "CPU status    : %d \n", infop.pi_state);  fprintf (stderr, "CPU type      : %s \n", infop.pi_processor_type);  fprintf (stderr, "FPU type      : %s \n", infop.pi_fputypes);  fprintf (stderr, "CPU Clock     : %d MHz\n", infop.pi_clock);  fprintf (stderr, "Mem Page size : %d \n", sysconf (_SC_PAGESIZE));  fprintf (stderr, "Total pages   : %d \n", sysconf (_SC_PHYS_PAGES));  fprintf (stderr, "Free pages    : %d \n", sysconf (_SC_AVPHYS_PAGES));  fprintf (stderr, "Phy. Mem size : %d MBytes\n", (sysconf (_SC_PAGESIZE) * (sysconf (_SC_PHYS_PAGES))) >> 20);  fprintf (stderr, "\n");}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -