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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? global.c

?? linux下獲取一些環(huán)境信息的代碼
?? C
字號:
/* * Copyright 1998-2002 by Albert Cahalan; all rights resered.          * This file may be used subject to the terms and conditions of the * GNU Library 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 Library General Public License for more details. */                                 #include <stdlib.h>#include <termios.h>#include <stdio.h>#include <unistd.h>#include <sys/ioctl.h>#include <sys/types.h>#include <pwd.h>#include <grp.h>#include <string.h>#include <sys/stat.h>#include <fcntl.h>                     #include "common.h"#include <sys/sysmacros.h>#include "../proc/wchan.h"#include "../proc/version.h"#include "../proc/sysinfo.h"#ifndef __GNU_LIBRARY__#define __GNU_LIBRARY__ -1#endif#ifndef __GLIBC__#define __GLIBC__ -1#endif#ifndef __GLIBC_MINOR__#define __GLIBC_MINOR__ -1#endifstatic const char * saved_personality_text = "You found a bug!";int             all_processes = -1;const char     *bsd_j_format = (const char *)0xdeadbeef;const char     *bsd_l_format = (const char *)0xdeadbeef;const char     *bsd_s_format = (const char *)0xdeadbeef;const char     *bsd_u_format = (const char *)0xdeadbeef;const char     *bsd_v_format = (const char *)0xdeadbeef;int             bsd_c_option = -1;int             bsd_e_option = -1;uid_t           cached_euid = -1;dev_t           cached_tty = -1;char            forest_prefix[4 * 32*1024 + 100];     // FIXMEint             forest_type = -1;unsigned        format_flags = 0xffffffff;   /* -l -f l u s -j... */format_node    *format_list = (format_node *)0xdeadbeef; /* digested formatting options */unsigned        format_modifiers = 0xffffffff;   /* -c -j -y -P -L... */int             header_gap = -1;int             header_type = -1;int             include_dead_children = -1;int             lines_to_next_header = -1;const char     *namelist_file = (const char *)0xdeadbeef;int             negate_selection = -1;int             running_only = -1;int             page_size = -1;  // "int" for math reasons?unsigned        personality = 0xffffffff;int             prefer_bsd_defaults = -1;int             screen_cols = -1;int             screen_rows = -1;unsigned long   seconds_since_boot = -1;selection_node *selection_list = (selection_node *)0xdeadbeef;unsigned        simple_select = 0xffffffff;sort_node      *sort_list = (sort_node *)0xdeadbeef; /* ready-to-use sort list */const char     *sysv_f_format = (const char *)0xdeadbeef;const char     *sysv_fl_format = (const char *)0xdeadbeef;const char     *sysv_j_format = (const char *)0xdeadbeef;const char     *sysv_l_format = (const char *)0xdeadbeef;unsigned        thread_flags = 0xffffffff;int             unix_f_option = -1;int             user_is_number = -1;int             wchan_is_number = -1;static void reset_selection_list(void){  selection_node *old;  selection_node *walk = selection_list;  if(selection_list == (selection_node *)0xdeadbeef){    selection_list = NULL;    return;  }  while(walk){    old = walk;    walk = old->next;    free(old->u);    free(old);  }  selection_list = NULL;}// The rules:// 1. Defaults are implementation-specific. (ioctl,termcap,guess)// 2. COLUMNS and LINES override the defaults. (standards compliance)// 3. Command line options override everything else.// 4. Actual output may be more if the above is too narrow.//// SysV tends to spew semi-wide output in all cases. The args// will be limited to 64 or 80 characters, without regard to// screen size. So lines of 120 to 160 chars are normal.// Tough luck if you want more or less than that! HP-UX has a// new "-x" option for 1024-char args in place of comm that// we'll implement at some point.//// BSD tends to make a good effort, then fall back to 80 cols.// Use "ww" to get infinity. This is nicer for "ps | less"// and "watch ps". It can run faster too.static void set_screen_size(void){  struct winsize ws;  char *columns; /* Unix98 environment variable */  char *lines;   /* Unix98 environment variable */  do{    int fd;    if(ioctl(STDOUT_FILENO, TIOCGWINSZ, &ws) != -1 && ws.ws_col>0 && ws.ws_row>0) break;    if(ioctl(STDERR_FILENO, TIOCGWINSZ, &ws) != -1 && ws.ws_col>0 && ws.ws_row>0) break;    if(ioctl(STDIN_FILENO,  TIOCGWINSZ, &ws) != -1 && ws.ws_col>0 && ws.ws_row>0) break;    fd = open("/dev/tty", O_NOCTTY|O_NONBLOCK|O_RDONLY);    if(fd != -1){      int ret = ioctl(fd, TIOCGWINSZ, &ws);      close(fd);      if(ret != -1 && ws.ws_col>0 && ws.ws_row>0) break;    }    // TODO: ought to do tgetnum("co") and tgetnum("li") here    ws.ws_col = 80;    ws.ws_row = 24;  }while(0);  screen_cols = ws.ws_col;  // hmmm, NetBSD subtracts 1  screen_rows = ws.ws_row;  // TODO: delete this line  if(!isatty(STDOUT_FILENO)) screen_cols = OUTBUF_SIZE;  columns = getenv("COLUMNS");  if(columns && *columns){    long t;    char *endptr;    t = strtol(columns, &endptr, 0);    if(!*endptr && (t>0) && (t<(long)OUTBUF_SIZE)) screen_cols = (int)t;  }  lines   = getenv("LINES");  if(lines && *lines){    long t;    char *endptr;    t = strtol(lines, &endptr, 0);    if(!*endptr && (t>0) && (t<(long)OUTBUF_SIZE)) screen_rows = (int)t;  }  if((screen_cols<9) || (screen_rows<2))    fprintf(stderr,"Your %dx%d screen size is bogus. Expect trouble.\n",      screen_cols, screen_rows    );}/**************** personality control **************/typedef struct personality_table_struct {  const char *name; /* personality name */  const void *jump; /* See gcc extension info.   :-)   */} personality_table_struct;static int compare_personality_table_structs(const void *a, const void *b){  return strcasecmp(((const personality_table_struct*)a)->name,((const personality_table_struct*)b)->name);}static const char *set_personality(void){  const char *s;  size_t sl;  char buf[16];  personality_table_struct findme = { buf, NULL};  personality_table_struct *found;  static const personality_table_struct personality_table[] = {  {"390",      &&case_390},  {"aix",      &&case_aix},  {"bsd",      &&case_bsd},  {"compaq",   &&case_compaq},  {"debian",   &&case_debian},  {"default",  &&case_default},  {"digital",  &&case_digital},  {"gnu",      &&case_gnu},  {"hp",       &&case_hp},  {"hpux",     &&case_hpux},  {"irix",     &&case_irix},  {"linux",    &&case_linux},  {"old",      &&case_old},  {"os390",    &&case_os390},  {"posix",    &&case_posix},  {"s390",     &&case_s390},  {"sco",      &&case_sco},  {"sgi",      &&case_sgi},  {"solaris2", &&case_solaris2},  {"sunos4",   &&case_sunos4},  {"svr4",     &&case_svr4},  {"sysv",     &&case_sysv},  {"tru64",    &&case_tru64},  {"unix",     &&case_unix},  {"unix95",   &&case_unix95},  {"unix98",   &&case_unix98},  {"unknown",  &&case_unknown}  };  const int personality_table_count = sizeof(personality_table)/sizeof(personality_table_struct);  personality = 0;  prefer_bsd_defaults = 0;  bsd_j_format = "OL_j";  bsd_l_format = "OL_l";  bsd_s_format = "OL_s";  bsd_u_format = "OL_u";  bsd_v_format = "OL_v";  /* When these are NULL, the code does SysV output modifier logic */  sysv_f_format  = NULL;  sysv_fl_format = NULL;  sysv_j_format  = NULL;  sysv_l_format  = NULL;  s = getenv("PS_PERSONALITY");  if(!s || !*s) s = getenv("CMD_ENV");  if(!s || !*s) s="unknown";   /* "Do The Right Thing[tm]" */  if(getenv("I_WANT_A_BROKEN_PS")) s="old";  sl = strlen(s);  if(sl > 15) return "Environment specified an unknown personality.";  strncpy(buf, s, sl);  buf[sl] = '\0';  saved_personality_text = strdup(buf);  found = bsearch(&findme, personality_table, personality_table_count,      sizeof(personality_table_struct), compare_personality_table_structs  );  if(!found) return "Environment specified an unknown personality.";  goto *(found->jump);    /* See gcc extension info.  :-)   */  case_bsd:    personality = PER_FORCE_BSD | PER_BSD_h | PER_BSD_m;    prefer_bsd_defaults = 1;    bsd_j_format = "FB_j";    bsd_l_format = "FB_l";    /* bsd_s_format not used */    bsd_u_format = "FB_u";    bsd_v_format = "FB_v";    return NULL;  case_old:    personality = PER_FORCE_BSD | PER_OLD_m;    prefer_bsd_defaults = 1;    return NULL;  case_debian:  /* Toss this? They don't seem to care much. */  case_gnu:    personality = PER_GOOD_o | PER_OLD_m;    prefer_bsd_defaults = 1;    sysv_f_format  = "RD_f";    /* sysv_fl_format = "RD_fl"; */   /* old Debian ps can't do this! */    sysv_j_format  = "RD_j";    sysv_l_format  = "RD_l";    return NULL;  case_linux:    personality = PER_GOOD_o | PER_ZAP_ADDR | PER_SANE_USER;    return NULL;  case_default: /* use defaults for ps, ignoring other environment variables */    return NULL;  case_unknown: /* defaults, but also check inferior environment variables */    if(      getenv("UNIX95")     /* Irix */      || getenv("POSIXLY_CORRECT")  /* most gnu stuff */      || (getenv("POSIX2") && !strcmp(getenv("POSIX2"), "on")) /* Unixware 7 */    ) personality = PER_BROKEN_o;    return NULL;  case_aix:    bsd_j_format = "FB_j";    bsd_l_format = "FB_l";    /* bsd_s_format not used */    bsd_u_format = "FB_u";    bsd_v_format = "FB_v";    return NULL;  case_tru64:  case_compaq:  case_digital:    // no PER_NO_DEFAULT_g even though man page claims it    // Reality: the g is a NOP    personality = PER_GOOD_o | PER_BSD_h;    prefer_bsd_defaults = 1;    sysv_f_format  = "F5FMT";    sysv_fl_format = "FL5FMT";    sysv_j_format  = "JFMT";    sysv_l_format  = "L5FMT";    bsd_j_format = "JFMT";    bsd_l_format = "LFMT";    bsd_s_format = "SFMT";    bsd_u_format = "UFMT";    bsd_v_format = "VFMT";    return NULL;  case_sunos4:    personality = PER_NO_DEFAULT_g;    prefer_bsd_defaults = 1;    bsd_j_format = "FB_j";    bsd_l_format = "FB_l";    /* bsd_s_format not used */    bsd_u_format = "FB_u";    bsd_v_format = "FB_v";    return NULL;  case_irix:  case_sgi:    s = getenv("_XPG");    if(s && s[0]>'0' && s[0]<='9') personality = PER_BROKEN_o;    else personality = PER_IRIX_l;    return NULL;  case_os390:  /* IBM's OS/390 OpenEdition on the S/390 mainframe */  case_s390:  case_390:    sysv_j_format  = "J390";  /* don't know what -jl and -jf do */    return NULL;  case_hp:  case_hpux:    personality = PER_BROKEN_o | PER_HPUX_x;    return NULL;  case_svr4:  case_sysv:  case_sco:    personality = PER_BROKEN_o | PER_SVR4_x;    return NULL;  case_posix:  case_solaris2:  case_unix95:  case_unix98:  case_unix:    personality = PER_BROKEN_o;    return NULL;}/************ Call this to reinitialize everything ***************/void reset_global(void){  static proc_t p;  reset_selection_list();  look_up_our_self(&p);  set_screen_size();  set_personality();    all_processes         = 0;  bsd_c_option          = 0;  bsd_e_option          = 0;  cached_euid           = geteuid();  cached_tty            = p.tty;/* forest_prefix must be all zero because of POSIX */  forest_type           = 0;  format_flags          = 0;   /* -l -f l u s -j... */  format_list           = NULL; /* digested formatting options */  format_modifiers      = 0;   /* -c -j -y -P -L... */  header_gap            = -1;  /* send lines_to_next_header to -infinity */  header_type           = HEAD_SINGLE;  include_dead_children = 0;  lines_to_next_header  = 1;  namelist_file         = NULL;  negate_selection      = 0;  page_size             = getpagesize();  running_only          = 0;  seconds_since_boot    = uptime(0,0);  selection_list        = NULL;  simple_select         = 0;  sort_list             = NULL;  thread_flags          = 0;  unix_f_option         = 0;  user_is_number        = 0;  wchan_is_number       = 0;}static const char archdefs[] =#ifdef __alpha__" alpha"#endif#ifdef __arm__" arm"#endif#ifdef __hppa__" hppa"#endif#ifdef __i386__" i386"#endif#ifdef __ia64__" ia64"#endif#ifdef __mc68000__" mc68000"#endif#ifdef __mips64__" mips64"#endif#ifdef __mips__" mips"#endif#ifdef __powerpc__" powerpc"#endif#ifdef __sh3__" sh3"#endif#ifdef __sh__" sh"#endif#ifdef __sparc__" sparc"#endif#ifdef __sparc_v9__" sparc_v9"#endif#ifdef __x86_64__" x86_64"#endif"";/*********** spew variables ***********/void self_info(void){  fprintf(stderr,    "BSD j    %s\n"    "BSD l    %s\n"    "BSD s    %s\n"    "BSD u    %s\n"    "BSD v    %s\n"    "SysV -f  %s\n"    "SysV -fl %s\n"    "SysV -j  %s\n"    "SysV -l  %s\n"    "\n",    bsd_j_format   ? bsd_j_format   : "(none)",    bsd_l_format   ? bsd_l_format   : "(none)",    bsd_s_format   ? bsd_s_format   : "(none)",    bsd_u_format   ? bsd_u_format   : "(none)",    bsd_v_format   ? bsd_v_format   : "(none)",    sysv_f_format  ? sysv_f_format  : "(none)",    sysv_fl_format ? sysv_fl_format : "(none)",    sysv_j_format  ? sysv_j_format  : "(none)",    sysv_l_format  ? sysv_l_format  : "(none)"  );  display_version();  fprintf(stderr, "Linux version %d.%d.%d\n",    LINUX_VERSION_MAJOR(linux_version_code),    LINUX_VERSION_MINOR(linux_version_code),    LINUX_VERSION_PATCH(linux_version_code)  );  /* __libc_print_version(); */  /* how can we get the run-time version? */  fprintf(stderr, "Compiled with: glibc %d.%d, gcc %d.%d\n\n",    __GLIBC__, __GLIBC_MINOR__, __GNUC__, __GNUC_MINOR__  );  fprintf(stderr,    "header_gap=%d lines_to_next_header=%d\n"    "screen_cols=%d screen_rows=%d\n"    "\n",    header_gap, lines_to_next_header,    screen_cols, screen_rows  );  fprintf(stderr,    "personality=0x%08x (from \"%s\")\n"    "EUID=%d TTY=%d,%d Hertz=%Ld page_size=%d\n",    personality, saved_personality_text,    cached_euid, (int)major(cached_tty), (int)minor(cached_tty), Hertz,    (int)(page_size)  );  fprintf(stderr,    "sizeof(proc_t)=%d sizeof(long)=%d sizeof(KLONG)=%d\n",    (int)sizeof(proc_t), (int)sizeof(long), (int)sizeof(KLONG)  );  fprintf(stderr, "archdefs:%s\n", archdefs);  open_psdb(namelist_file);  fprintf(stderr,"namelist_file=\"%s\"\n",namelist_file?namelist_file:"<no System.map file>");}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕色av一区二区三区| 日韩有码一区二区三区| 亚洲精品日韩一| 日本不卡中文字幕| 成人免费视频国产在线观看| av在线不卡免费看| 9191久久久久久久久久久| 欧美v日韩v国产v| 亚洲欧美激情在线| 韩国一区二区三区| 在线观看免费一区| 日本一区二区免费在线| 午夜视频一区在线观看| 成人视屏免费看| 精品免费日韩av| 亚洲高清三级视频| 国产成人鲁色资源国产91色综| 欧美日韩不卡在线| 一区二区三区在线不卡| 高清av一区二区| 久久综合九色综合97婷婷女人| 亚洲第一在线综合网站| 91同城在线观看| 国产人成一区二区三区影院| 激情都市一区二区| 欧美一区二区三区影视| 一区二区三区高清| 97精品国产露脸对白| 国产日韩欧美亚洲| 国产乱国产乱300精品| 2017欧美狠狠色| 国产剧情一区二区三区| 欧美大片拔萝卜| 免费在线观看成人| 欧美大片在线观看| 卡一卡二国产精品 | 久久综合久久久久88| 蜜桃久久av一区| 日韩女优av电影在线观看| 麻豆成人久久精品二区三区红 | 亚洲一区二区免费视频| 欧洲日韩一区二区三区| 亚洲乱码日产精品bd| 99精品久久免费看蜜臀剧情介绍| 欧美高清在线一区二区| 成人污污视频在线观看| 亚洲日本va午夜在线影院| 91色.com| 午夜在线电影亚洲一区| 在线播放视频一区| 国内外精品视频| 中文字幕在线一区| 91成人国产精品| 日韩福利视频网| 中文无字幕一区二区三区| 成人在线一区二区三区| 亚洲成人免费看| 国产午夜精品久久| av电影一区二区| 奇米精品一区二区三区四区| 久久久精品中文字幕麻豆发布| 99精品视频一区| 天天综合天天综合色| 中文字幕精品综合| 91精品国产综合久久福利软件| 国产精品性做久久久久久| 一区二区日韩av| 久久久精品日韩欧美| 91麻豆精品国产自产在线观看一区| 国产精品一区二区视频| 亚洲国产精品麻豆| 中文字幕一区二区日韩精品绯色| 欧美一三区三区四区免费在线看 | 国内精品伊人久久久久av影院| 亚洲综合免费观看高清完整版在线| 久久嫩草精品久久久久| 69久久夜色精品国产69蝌蚪网| 大尺度一区二区| 国产一区视频导航| 紧缚捆绑精品一区二区| 日本视频中文字幕一区二区三区| 综合婷婷亚洲小说| 国产区在线观看成人精品 | 国产二区国产一区在线观看| 午夜精品免费在线| 亚洲狠狠爱一区二区三区| 国产精品网站在线播放| 精品福利一二区| 久久久激情视频| 国产日产欧美一区二区视频| 欧美哺乳videos| 亚洲精品在线免费播放| 精品久久久影院| 久久久久99精品国产片| 国产亚洲婷婷免费| 中文字幕欧美三区| 欧美肥大bbwbbw高潮| 制服丝袜激情欧洲亚洲| 欧美成va人片在线观看| 国产喂奶挤奶一区二区三区| 国产日韩欧美在线一区| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 欧美亚洲动漫制服丝袜| 欧洲精品在线观看| 精品人伦一区二区色婷婷| 日韩精品中午字幕| 欧美高清在线一区二区| 一区二区成人在线| 久久国内精品自在自线400部| 国产精品一区二区免费不卡| 91免费在线看| 日韩一区二区三区观看| 久久久久久免费网| 亚洲国产中文字幕在线视频综合| 性欧美疯狂xxxxbbbb| 国产乱理伦片在线观看夜一区| 成人精品视频一区| 欧美福利视频一区| 久久久午夜精品理论片中文字幕| 国产精品福利一区| 久久精品国产亚洲a| 91首页免费视频| 精品国产乱码久久久久久夜甘婷婷 | 亚洲一区二区精品3399| 国产伦精一区二区三区| 欧美视频中文字幕| 中文子幕无线码一区tr| 秋霞影院一区二区| 色美美综合视频| 国产精品伦理一区二区| 麻豆免费看一区二区三区| 91久久久免费一区二区| 国产色产综合产在线视频| 婷婷开心久久网| 99re这里只有精品首页| 久久99国内精品| 4438x亚洲最大成人网| 亚洲精品综合在线| 在线视频你懂得一区二区三区| 亚洲国产精品99久久久久久久久| 日韩国产精品久久| 欧美一区二区三区婷婷月色| 亚洲一级电影视频| 欧美日韩精品一区二区三区四区| 综合激情成人伊人| 福利视频网站一区二区三区| 欧美成人vps| 免费成人美女在线观看| 亚洲一区二区三区免费视频| 欧美四级电影在线观看| 亚洲一区免费视频| 欧美一区二区三区四区久久| 日欧美一区二区| 日韩欧美精品在线| 国产一区二区精品久久99| 久久久精品日韩欧美| 波多野结衣亚洲| 一区二区三区四区激情| 精品视频在线视频| 久久精工是国产品牌吗| 国产亚洲一二三区| 色综合久久久久| 免费观看久久久4p| 国产精品福利一区| 制服丝袜国产精品| 国产乱码精品一区二区三区忘忧草| 国产欧美日韩亚州综合| 色欧美日韩亚洲| 日韩成人午夜精品| 国产精品系列在线| 欧美人与性动xxxx| 国产成人午夜视频| 午夜婷婷国产麻豆精品| 国产精品视频九色porn| 在线一区二区三区四区五区| 蜜臀久久99精品久久久久宅男| 国产欧美精品国产国产专区 | 五月综合激情网| 国产亚洲成aⅴ人片在线观看| 在线播放中文字幕一区| 精品一区二区成人精品| 1024亚洲合集| 精品国产123| 日韩一区二区三区四区五区六区| 91麻豆精品视频| 国产白丝网站精品污在线入口| 天天综合天天做天天综合| 亚洲色图丝袜美腿| 欧美极品xxx| 精品国产一二三| 欧美一区二区女人| 欧美色精品天天在线观看视频| 国产不卡视频在线播放| 久久爱www久久做| 日日噜噜夜夜狠狠视频欧美人| 亚洲男人的天堂av| 亚洲日本一区二区三区| 中文字幕在线不卡| 亚洲精品国产精品乱码不99| 67194成人在线观看|