加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

深入redis内部之redis启动过程之一

发布时间:2020-12-16 04:45:13 所属栏目:安全 来源:网络整理
导读:redis作为一个服务器,它的启动是从main函数开始的。redis.c 1. 进程重命名 定义在config.h (defined __NetBSD__ || defined __FreeBSD__ || defined __OpenBSD__) //bsd(unix的变种)宏定义 USE_SETPROCTITLE span style="color: #0000ff;"#if (defined li

redis作为一个服务器,它的启动是从main函数开始的。redis.c

1. 进程重命名

定义在config.h

(defined __NetBSD__ || defined __FreeBSD__ || defined __OpenBSD__) //bsd(unix的变种)宏定义 USE_SETPROCTITLE

<span style="color: #0000ff;">#if (defined linux || defined APPLE__) //linux和苹果的宏定义
<span style="color: #0000ff;">#define USE_SETPROCTITLE
<span style="color: #0000ff;">#define INIT_SETPROCTITLE_REPLACEMENT
<span style="color: #0000ff;">void spt_init(<span style="color: #0000ff;">int argc,<span style="color: #0000ff;">char <span style="color: #000000;">argv[]);
<span style="color: #0000ff;">void setproctitle(<span style="color: #0000ff;">const <span style="color: #0000ff;">char
<span style="color: #000000;">fmt,...);
<span style="color: #0000ff;">#endif

http://www.baike.com/wiki/BSD

BSD的开源後裔?不同的BSD操作系统针对不同的用途及用户,可应用于多种硬件构架。在政府机构中常能看到BSD的身影。虽然下面的BSD功能可能并非独有,但每种BSD在各自的领域,都逐渐具有了良好声誉,有的专注于性能,有的则以安全见长。是最年轻的BSD,专门提供比FreeBSD更优秀的系统,并使内核直接支持SSI集群,以取得更好的计算效果。这个项目在此方向上,才开始数年,主要关注i386平台。?FreeBSD在BSD家族中以易用性与高性能而着称,由于主要用作微处理器架构,如i386、AMD's 64-bit i386扩展,所以FreeBSD非常关注多处理器。FreeBSD在i386和amd64服务器上,运行地非常好,当然,它也可以在其他硬件构架上运行。?NetBSD拥有特别出色的可移植性,能在多达54种平台上运行,小到嵌入式的掌上设备,大到服务器群,NetBSD甚至还在国际空间站中服务。OpenBSD在密码学和安全方面特别出众,可移植性也很好,当然略逊于NetBSD。安全功能如OpenSSH,是由OpenBSD率先开创的。OpenBSD作为安全请求机器(security demanding machines)运行,受到好评。必须注意的是,上面所罗列的,更多地是基于感性认识,并针对其开发焦点,并没有严格地比较规则。实际而言,每种具体的BSD都可担当许多角色任务。

2. 设置locale

?

setlocale(LC_COLLATE,);

http://manpages.ubuntu.com/manpages/lucid/en/man3/setlocale.3.html

NAME

       setlocale - set the current locale

SYNOPSIS

       #include 
   <strong>char</strong> <strong>*setlocale(int</strong> <span style="text-decoration: underline;"&gt;category</span><strong>,</strong> <strong>const</strong> <strong>char</strong> <strong>*</strong><span style="text-decoration: underline;"&gt;locale</span><strong>);</strong>

DESCRIPTION

       The  setlocale() function is used to set or query the program’s current
       locale.
   If <span style="text-decoration: underline;"&gt;locale</span> is  not  NULL,the  program’s  current  locale  is  modified
   according  to  the  arguments.   The argument <span style="text-decoration: underline;"&gt;category</span> determines which
   parts of the program’s current locale should be modified.

   <strong>LC_ALL</strong> for all of the locale.

   <strong>LC_COLLATE</strong>
          for regular expression matching (it determines  the  meaning  of
          range expressions and equivalence classes) and string collation.

   <strong>LC_CTYPE</strong>
          for  regular  expression  matching,character   classification,conversion,case-sensitive   comparison,and  wide  character
          functions.

   <strong>LC_MESSAGES</strong>
          for localizable natural-language messages.

   <strong>LC_MONETARY</strong>
          for monetary formatting.

   <strong>LC_NUMERIC</strong>
          for number  formatting  (such  as  the  decimal  point  and  the
          thousands separator).

   <strong>LC_TIME</strong>
          for time and date formatting.

   The  argument  <span style="text-decoration: underline;"&gt;locale</span> is a pointer to a character string containing the
   required setting of <span style="text-decoration: underline;"&gt;category</span>.  Such a string  is  either  a  well-known
   constant  like "C" or "da_DK" (see below),or an opaque string that was
   returned by another call of <strong>setlocale</strong>().

   If <span style="text-decoration: underline;"&gt;locale</span> is <strong>""</strong>,each part of the locale that should be modified is set
   according    to   the   environment   variables.    The   details   are
   implementation-dependent.  For glibc,first (regardless  of  <span style="text-decoration: underline;"&gt;category</span>),the  environment  variable  <strong>LC_ALL</strong>  is  inspected,next the environment
   variable with the same name  as  the  category  (<strong>LC_COLLATE</strong>,<strong>LC_CTYPE</strong>,<strong>LC_MESSAGES</strong>,<strong>LC_MONETARY</strong>,<strong>LC_NUMERIC</strong>,<strong>LC_TIME</strong>)  and  finally  the
   environment variable <strong>LANG</strong>.  The first existing environment variable  is
   used.   If its value is not a valid locale specification,the locale is
   unchanged,and <strong>setlocale</strong>() returns NULL.

   The locale <strong>"C"</strong> or <strong>"POSIX"</strong> is  a  portable  locale;  its  <strong>LC_CTYPE</strong>  part
   corresponds to the 7-bit ASCII character set.

   A      locale      name      is      typically      of     the     form
   <span style="text-decoration: underline;"&gt;language</span>[_<span style="text-decoration: underline;"&gt;territory</span>][.<span style="text-decoration: underline;"&gt;codeset</span>][@<span style="text-decoration: underline;"&gt;modifier</span>],where <span style="text-decoration: underline;"&gt;language</span> is an ISO 639
   language  code,<span style="text-decoration: underline;"&gt;territory</span> is an ISO 3166 country code,and <span style="text-decoration: underline;"&gt;codeset</span> is a
   character set or encoding identifier like <strong>ISO-8859-1</strong> or <strong>UTF-8</strong>.   For  a
   list of all supported locales,try "locale -a",cf. <strong><a href="http://manpages.ubuntu.com/manpages/lucid/en/man1/locale.1.html"&gt;locale</a></strong>(1).

   If <span style="text-decoration: underline;"&gt;locale</span> is NULL,the current locale is only queried,not modified.

   On  startup of the main program,the portable <strong>"C"</strong> locale is selected as
   default.  A program may be made portable to all locales by calling:

       setlocale(LC_ALL,"");

   after program initialization,by  using  the  values  returned  from  a
   <strong><a href="http://manpages.ubuntu.com/manpages/lucid/en/man3/localeconv.3.html"&gt;localeconv</a></strong>(3)  call  for  locale-dependent  information,by  using the
   multi-byte  and  wide  character  functions  for  text  processing   if
   <strong>MB_CUR_MAX</strong>  <strong>></strong>  <strong>1</strong>,and  by  using <strong><a href="http://manpages.ubuntu.com/manpages/lucid/en/man3/strcoll.3.html"&gt;strcoll</a></strong>(3),<strong><a href="http://manpages.ubuntu.com/manpages/lucid/en/man3/wcscoll.3.html"&gt;wcscoll</a></strong>(3) or <strong><a href="http://manpages.ubuntu.com/manpages/lucid/en/man3/strxfrm.3.html"&gt;strxfrm</a></strong>(3),<strong><a href="http://manpages.ubuntu.com/manpages/lucid/en/man3/wcsxfrm.3.html"&gt;wcsxfrm</a></strong>(3) to compare strings.

RETURN?VALUE

       A  successful  call  to  setlocale()  returns  an  opaque  string  that
       corresponds  to the locale set.  This string may be allocated in static
       storage.  The string returned is such that a subsequent call with  that
       string  and  its  associated  category  will  restore  that part of the
       process’s locale.  The return value is NULL if the  request  cannot  be
       honored.

CONFORMING?TO

       C89,C99,POSIX.1-2001.

NOTES

       Linux  (that  is,glibc) supports the portable locales "C" and "POSIX".
       In the good old days there used to be support for the European  Latin-1
       "ISO-8859-1"  locale  (e.g.,in  libc-4.5.21 and libc-4.6.27),and the
       Russian  "KOI-8"  (more   precisely,"koi-8r")   locale   (e.g.,in
       libc-4.6.27),so    that    having    an    environment    variable
         sufficed  to  make  (3)  return  the  right
       answer.   These  days non-English speaking Europeans have to work a bit
       harder,and must install actual locale files.

SEE?ALSO

       (1),(1),(3),(3),(3),(3),(3),(3),(7),(7)

COLOPHON

       This  page  is  part of release 3.23 of the Linux  project.  A
       description of the project,and information about reporting  bugs,can
       be found at .

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读