📄 dce_utils.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 + -