亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? sysctl.c

?? linux下獲取一些環(huán)境信息的代碼
?? C
字號(hào):
/* * Sysctl 1.01 - A utility to read and manipulate the sysctl parameters * * * "Copyright 1999 George Staikos * This file may be used subject to the terms and conditions of the * GNU General Public License Version 2, or any later version * at your option, as published by the Free Software Foundation. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details." * * Changelog: *            v1.01: *                   - added -p <preload> to preload values from a file *            Horms:  *                   - added -q to be quiet when modifying values * * Changes by Albert Cahalan, 2002. */#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <sys/stat.h>#include <sys/types.h>#include <dirent.h>#include <string.h>#include <errno.h>#include "proc/procps.h"#include "proc/version.h"// Proof that C++ causes brain damage:typedef int bool;static bool true  = 1;static bool false = 0;/* *    Globals... */static const char PROC_PATH[] = "/proc/sys/";static const char DEFAULT_PRELOAD[] = "/etc/sysctl.conf";static bool NameOnly;static bool PrintName;static bool PrintNewline;static bool IgnoreError;static bool Quiet;/* error messages */static const char ERR_UNKNOWN_PARAMETER[] = "error: Unknown parameter \"%s\"\n";static const char ERR_MALFORMED_SETTING[] = "error: Malformed setting \"%s\"\n";static const char ERR_NO_EQUALS[] = "error: \"%s\" must be of the form name=value\n";static const char ERR_INVALID_KEY[] = "error: \"%s\" is an unknown key\n";static const char ERR_UNKNOWN_WRITING[] = "error: \"%s\" setting key \"%s\"\n";static const char ERR_UNKNOWN_READING[] = "error: \"%s\" reading key \"%s\"\n";static const char ERR_PERMISSION_DENIED[] = "error: permission denied on key '%s'\n";static const char ERR_OPENING_DIR[] = "error: unable to open directory \"%s\"\n";static const char ERR_PRELOAD_FILE[] = "error: unable to open preload file \"%s\"\n";static const char WARN_BAD_LINE[] = "warning: %s(%d): invalid syntax, continuing...\n";static void slashdot(char *restrict p, char old, char new){  p = strpbrk(p,"/.");  if(!p) return;            /* nothing -- can't be, but oh well */  if(*p==new) return;       /* already in desired format */  while(p){    char c = *p;    if(c==old) *p=new;    if(c==new) *p=old;    p = strpbrk(p+1,"/.");  }}/* *     Display the usage format * */static int Usage(const char *restrict const name) {   printf("usage:  %s [-n] [-e] variable ... \n"          "        %s [-n] [-e] [-q] -w variable=value ... \n"           "        %s [-n] [-e] -a \n"           "        %s [-n] [-e] [-q] -p <file>   (default /etc/sysctl.conf) \n"          "        %s [-n] [-e] -A\n", name, name, name, name, name);   return -1;}/* *     Strip the leading and trailing spaces from a string * */static char *StripLeadingAndTrailingSpaces(char *oneline) {   char *t;   if (!oneline || !*oneline)      return oneline;   t = oneline;   t += strlen(oneline)-1;   while ((*t==' ' || *t=='\t' || *t=='\n' || *t=='\r') && t!=oneline)      *t-- = 0;   t = oneline;   while ((*t==' ' || *t=='\t') && *t!=0)      t++;   return t;}static int DisplayAll(const char *restrict const path);/* *     Read a sysctl setting  * */static int ReadSetting(const char *restrict const name) {   int rc = 0;   char *restrict tmpname;   char *restrict outname;   char inbuf[1025];   FILE *restrict fp;   if (!name || !*name) {      fprintf(stderr, ERR_INVALID_KEY, name);      return -1;   }   /* used to open the file */   tmpname = malloc(strlen(name)+strlen(PROC_PATH)+1);   strcpy(tmpname, PROC_PATH);   strcat(tmpname, name);    slashdot(tmpname+strlen(PROC_PATH),'.','/'); /* change . to / */   /* used to display the output */   outname = strdup(name);   slashdot(outname,'/','.'); /* change / to . */   fp = fopen(tmpname, "r");   if (!fp) {      switch(errno) {      case ENOENT:         if (!IgnoreError) {            fprintf(stderr, ERR_INVALID_KEY, outname);            rc = -1;         }         break;      case EACCES:         fprintf(stderr, ERR_PERMISSION_DENIED, outname);         rc = -1;         break;      default:         fprintf(stderr, ERR_UNKNOWN_READING, strerror(errno), outname);         rc = -1;         break;      }   } else {      if(fgets(inbuf, sizeof inbuf - 1, fp)) {         // this loop is required, see         // /sbin/sysctl -a | egrep -6 dev.cdrom.info         do {            if (NameOnly) {               fprintf(stdout, "%s\n", outname);            } else {               /* already has the \n in it */               if (PrintName) {                  fprintf(stdout, "%s = %s", outname, inbuf);               } else {                  if (!PrintNewline) {                    char *nlptr = strchr(inbuf,'\n');                    if(nlptr) *nlptr='\0';                  }                  fprintf(stdout, "%s", inbuf);               }            }         } while(fgets(inbuf, sizeof inbuf - 1, fp));      } else {         switch(errno) {         case EACCES:            fprintf(stderr, ERR_PERMISSION_DENIED, outname);            rc = -1;            break;         case EISDIR:{            size_t len;            len = strlen(tmpname);            tmpname[len] = '/';            tmpname[len+1] = '\0';            rc = DisplayAll(tmpname);            break;         }         default:            fprintf(stderr, ERR_UNKNOWN_READING, strerror(errno), outname);            rc = -1;            break;         }      }      fclose(fp);   }   free(tmpname);   free(outname);   return rc;}/* *     Display all the sysctl settings  * */static int DisplayAll(const char *restrict const path) {   int rc = 0;   int rc2;   DIR *restrict dp;   struct dirent *restrict de;   struct stat ts;   dp = opendir(path);   if (!dp) {      fprintf(stderr, ERR_OPENING_DIR, path);      rc = -1;   } else {      readdir(dp);  // skip .      readdir(dp);  // skip ..      while (( de = readdir(dp) )) {         char *restrict tmpdir;         tmpdir = (char *restrict)malloc(strlen(path)+strlen(de->d_name)+2);         sprintf(tmpdir, "%s%s", path, de->d_name);         rc2 = stat(tmpdir, &ts);         if (rc2 != 0) {            perror(tmpdir);         } else {            if (S_ISDIR(ts.st_mode)) {               strcat(tmpdir, "/");               DisplayAll(tmpdir);            } else {               rc |= ReadSetting(tmpdir+strlen(PROC_PATH));            }         }         free(tmpdir);      }      closedir(dp);   }   return rc;}/* *     Write a sysctl setting  * */static int WriteSetting(const char *setting) {   int rc = 0;   const char *name = setting;   const char *value;   const char *equals;   char *tmpname;   FILE *fp;   char *outname;   if (!name) {        /* probably don't want to display this err */      return 0;   } /* end if */   equals = index(setting, '=');    if (!equals) {      fprintf(stderr, ERR_NO_EQUALS, setting);      return -1;   }   value = equals + 1;      /* point to the value in name=value */      if (!*name || !*value || name == equals) {       fprintf(stderr, ERR_MALFORMED_SETTING, setting);      return -2;   }   /* used to open the file */   tmpname = malloc(equals-name+1+strlen(PROC_PATH));   strcpy(tmpname, PROC_PATH);   strncat(tmpname, name, (int)(equals-name));    tmpname[equals-name+strlen(PROC_PATH)] = 0;   slashdot(tmpname+strlen(PROC_PATH),'.','/'); /* change . to / */   /* used to display the output */   outname = malloc(equals-name+1);                          strncpy(outname, name, (int)(equals-name));    outname[equals-name] = 0;   slashdot(outname,'/','.'); /* change / to . */    fp = fopen(tmpname, "w");   if (!fp) {      switch(errno) {      case ENOENT:         if (!IgnoreError) {            fprintf(stderr, ERR_INVALID_KEY, outname);            rc = -1;         }         break;      case EACCES:         fprintf(stderr, ERR_PERMISSION_DENIED, outname);         rc = -1;         break;      default:         fprintf(stderr, ERR_UNKNOWN_WRITING, strerror(errno), outname);         rc = -1;         break;      }   } else {      rc = fprintf(fp, "%s\n", value);      if (rc < 0) {         fprintf(stderr, ERR_UNKNOWN_WRITING, strerror(errno), outname);         fclose(fp);      } else {         rc=fclose(fp);         if (rc != 0)             fprintf(stderr, ERR_UNKNOWN_WRITING, strerror(errno), outname);      }      if (rc==0 && !Quiet) {         if (NameOnly) {            fprintf(stdout, "%s\n", outname);         } else {            if (PrintName) {               fprintf(stdout, "%s = %s\n", outname, value);            } else {               if (PrintNewline)                  fprintf(stdout, "%s\n", value);               else                  fprintf(stdout, "%s", value);            }         }      }   }   free(tmpname);   free(outname);   return rc;}/* *     Preload the sysctl's from the conf file *           - we parse the file and then reform it (strip out whitespace) * */static int Preload(const char *restrict const filename) {   char oneline[256];   char buffer[256];   FILE *fp;   char *t;   int n = 0;   int rc = 0;   char *name, *value;   fp = (filename[0]=='-' && !filename[1])      ? stdin      : fopen(filename, "r")   ;   if (!fp) {      fprintf(stderr, ERR_PRELOAD_FILE, filename);      return -1;   }   while (fgets(oneline, sizeof oneline, fp)) {      n++;      t = StripLeadingAndTrailingSpaces(oneline);      if (strlen(t) < 2)         continue;      if (*t == '#' || *t == ';')         continue;      name = strtok(t, "=");      if (!name || !*name) {         fprintf(stderr, WARN_BAD_LINE, filename, n);         continue;      }      StripLeadingAndTrailingSpaces(name);      value = strtok(NULL, "\n\r");      if (!value || !*value) {         fprintf(stderr, WARN_BAD_LINE, filename, n);         continue;      }      while ((*value == ' ' || *value == '\t') && *value != 0)         value++;      // should NameOnly affect this?      sprintf(buffer, "%s=%s", name, value);      rc |= WriteSetting(buffer);   }   fclose(fp);   return rc;}/* *    Main...  * */int main(int argc, char *argv[]) {   const char *me = (const char *)basename(argv[0]);   bool SwitchesAllowed = true;   bool WriteMode = false;   int ReturnCode = 0;   const char *preloadfile = DEFAULT_PRELOAD;   PrintName = true;   PrintNewline = true;   IgnoreError = false;   Quiet = false;   if (argc < 2) {       return Usage(me);   }   argv++;   for (; argv && *argv && **argv; argv++) {      if (SwitchesAllowed && **argv == '-') {        /* we have a switch */         if ((*argv)[1] && (*argv)[2]){       // don't yet handle "sysctl -ew"              if (!strcmp("--help",*argv)) {                 Usage(me);                 exit(0);              }              if (!strcmp("--version",*argv)) {                 fprintf(stdout, "sysctl (%s)\n",procps_version);                 exit(0);              }              fprintf(stderr, ERR_UNKNOWN_PARAMETER, *argv);              return Usage(me);         }         switch((*argv)[1]) {         case 'b':              /* This is "binary" format, which means more for BSD. */              PrintNewline = false;           /* FALL THROUGH */         case 'n':              PrintName = false;           break;         case 'e':              // For FreeBSD, -e means a "%s=%s\n" format. ("%s: %s\n" default)              // We (and NetBSD) use "%s = %s\n" always, and -e to ignore errors.              IgnoreError = true;           break;         case 'N':              NameOnly = true;           break;         case 'w':              SwitchesAllowed = false;              WriteMode = true;           break;         case 'f':  // the NetBSD way         case 'p':              argv++;              if (argv && *argv && **argv) {                 preloadfile = *argv;              }              return Preload(preloadfile);	 case 'q':	      Quiet = true;	   break;	 case 'o':  // BSD: binary values too, 1st 16 bytes in hex	 case 'x':  // BSD: binary values too, whole thing in hex	      /* does nothing */ ;	   break;         case 'a': // string and integer values (for Linux, all of them)         case 'A': // same as -a -o         case 'X': // same as -a -x              SwitchesAllowed = false;              return DisplayAll(PROC_PATH);         case 'V':              fprintf(stdout, "sysctl (%s)\n",procps_version);              exit(0);         case 'd':   // BSD: print description ("vm.kvm_size: Size of KVM")         case 'h':   // BSD: human-readable (did FreeBSD 5 make -e default?)         case '?':              return Usage(me);         default:              fprintf(stderr, ERR_UNKNOWN_PARAMETER, *argv);              return Usage(me);         }      } else {         if (NameOnly && Quiet)   // nonsense            return Usage(me);         SwitchesAllowed = false;         if (WriteMode || index(*argv, '='))            ReturnCode = WriteSetting(*argv);         else            ReturnCode = ReadSetting(*argv);      }   }   return ReturnCode;}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
无码av中文一区二区三区桃花岛| 不卡av在线免费观看| 欧美xxxxxxxx| 日韩一区二区免费在线电影| 日韩精品中文字幕一区| 国产午夜精品久久久久久免费视 | 欧美精品一区二区不卡| 欧美精品一区二| 亚洲第一久久影院| 另类的小说在线视频另类成人小视频在线 | 色综合久久天天| 欧美一区二区三区视频在线| 国产精品不卡在线观看| 蜜臀av一区二区| 色猫猫国产区一区二在线视频| 日韩一区二区免费高清| 亚洲自拍欧美精品| 91黄色免费看| 捆绑变态av一区二区三区| 99久久婷婷国产综合精品电影| 久久久亚洲午夜电影| 日韩精品电影在线| 欧美精品久久天天躁| 亚洲综合色婷婷| 欧美在线免费播放| 一卡二卡三卡日韩欧美| 99精品久久久久久| 欧美精品1区2区3区| 亚洲一区二区三区在线播放| 国产精品不卡一区二区三区| 偷拍自拍另类欧美| 日韩免费在线观看| 久久激情五月激情| 亚洲精品一区二区三区蜜桃下载 | 久久久久97国产精华液好用吗| 蜜臀av国产精品久久久久| 欧美福利视频一区| 看电影不卡的网站| 中文字幕亚洲欧美在线不卡| 91丝袜美腿高跟国产极品老师 | 国产午夜精品福利| av网站免费线看精品| 日韩精品福利网| 国产精品天天看| 日韩精品一区二区三区中文精品| 精品无人码麻豆乱码1区2区| 国产精品久久久久aaaa樱花| 精品视频全国免费看| 懂色av一区二区在线播放| 亚洲色图制服诱惑| www国产成人| 在线观看网站黄不卡| 国产iv一区二区三区| 精品伊人久久久久7777人| 中文字幕日韩av资源站| 久久久一区二区| 久久综合一区二区| 日韩一区二区在线看片| 欧美日本国产视频| 欧美在线制服丝袜| 国产一区二区三区综合| 亚洲一区二区三区激情| 亚洲综合激情小说| 亚洲综合一区在线| 亚洲国产美女搞黄色| 伊人一区二区三区| 亚洲国产精品影院| 欧美猛男gaygay网站| 这里只有精品电影| 色妹子一区二区| 欧美性生活一区| 欧美美女视频在线观看| 日韩欧美一级在线播放| 精品日本一线二线三线不卡| 精品久久久久一区| 国产欧美综合在线观看第十页| 精品国产露脸精彩对白| 国产欧美一区二区精品久导航| 欧美高清在线精品一区| 一区二区在线免费| 日本在线不卡一区| 成人福利视频在线| 欧美日产国产精品| 欧美极品少妇xxxxⅹ高跟鞋| 一区二区三区四区乱视频| 美国毛片一区二区| 在线免费观看日本一区| 精品裸体舞一区二区三区| 亚洲在线观看免费| 成人午夜伦理影院| 日韩午夜激情av| 亚洲美女淫视频| 粉嫩高潮美女一区二区三区| 91麻豆精品国产91久久久更新时间| 国产喂奶挤奶一区二区三区| 性做久久久久久免费观看欧美| 国产xxx精品视频大全| 久久夜色精品一区| 蜜臀av一区二区在线免费观看| 欧美日韩久久一区二区| 一区二区三区日韩欧美精品| 成人动漫一区二区三区| 久久久久久久精| 亚洲你懂的在线视频| 国产乱淫av一区二区三区| 久久久久久电影| 国产suv精品一区二区6| 国产精品久久久久aaaa樱花| 成人午夜视频在线观看| 亚洲日韩欧美一区二区在线| 成人aa视频在线观看| 亚洲男同性恋视频| 精品1区2区3区| 午夜影院久久久| 国产亚洲精品福利| 91在线你懂得| 美女在线观看视频一区二区| 精品久久久久久综合日本欧美| 国产成人av电影免费在线观看| 日韩欧美国产麻豆| 91麻豆国产福利在线观看| 亚洲va在线va天堂| 久久精品男人的天堂| 色噜噜狠狠成人网p站| 激情小说亚洲一区| 亚洲欧美日本在线| 日韩欧美高清在线| 97久久超碰国产精品电影| 免费看欧美女人艹b| 中文字幕在线免费不卡| 26uuu国产在线精品一区二区| 色系网站成人免费| 亚洲成人综合视频| 久久亚区不卡日本| 欧美日韩激情一区二区三区| 成人av网站大全| 国产不卡视频在线播放| 国产在线麻豆精品观看| 丝袜脚交一区二区| 日韩av成人高清| 亚洲成a人片在线观看中文| 亚洲夂夂婷婷色拍ww47| 久久综合久久鬼色中文字| 久久综合久久综合亚洲| 欧美日韩国产高清一区二区三区| av在线这里只有精品| 91影院在线观看| 99re视频这里只有精品| 99免费精品视频| 97国产一区二区| 欧美私模裸体表演在线观看| 在线视频国产一区| 精品1区2区3区| 日韩欧美自拍偷拍| 国产午夜精品理论片a级大结局| 亚洲不卡在线观看| 亚洲欧美另类久久久精品2019 | 亚洲bt欧美bt精品777| 亚洲1区2区3区视频| 精品一区二区在线视频| 国产一区欧美一区| 久久电影网站中文字幕| 国产伦精品一区二区三区免费| 成人免费视频一区二区| 色综合久久88色综合天天6| 欧美性感一类影片在线播放| 久久久影视传媒| 日韩高清电影一区| 播五月开心婷婷综合| 91精品国产美女浴室洗澡无遮挡| 欧美精品一区二| 麻豆精品蜜桃视频网站| 91久久精品一区二区三| 欧美国产精品中文字幕| 五月天丁香久久| 欧美亚洲综合在线| 国产精品高潮久久久久无| 九九国产精品视频| 欧美日韩中文字幕一区二区| 中文字幕在线观看不卡视频| 国产一区二区三区久久久| 91香蕉视频mp4| 奇米在线7777在线精品| 欧美日韩成人综合天天影院 | 最新热久久免费视频| 国产成人在线观看| 国产日韩欧美a| 豆国产96在线|亚洲| 亚洲另类在线视频| 欧洲视频一区二区| 日韩电影网1区2区| 精品国产乱码久久久久久闺蜜| 国产精一区二区三区| 国产精品不卡在线| 欧美日韩精品二区第二页| 免费观看一级欧美片| 国产午夜一区二区三区| 91在线观看下载| 亚洲最快最全在线视频| 日韩精品一区二区三区四区视频|