微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

1. 进程重命名

定义在config.h

修改进程名称 * BSD systems have support for it,we provide an implementation for * Linux and osx. (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-<a href="/tag/decoration/" target="_blank" class="keywords">decoration</a>: underline;"&gt;category</span><strong>,</strong> <strong>const</strong> <strong>char</strong> <strong>*</strong><span style="text-<a href="/tag/decoration/" target="_blank" class="keywords">decoration</a>: 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-<a href="/tag/decoration/" target="_blank" class="keywords">decoration</a>: underline;"&gt;locale</span> is  not  NULL,the  program’s  current  locale  is  modified
   according  to  the  arguments.   The argument <span style="text-<a href="/tag/decoration/" target="_blank" class="keywords">decoration</a>: underline;"&gt;category</span> deter<a href="/tag/mine/" target="_blank" class="keywords">mine</a>s 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 deter<a href="/tag/mine/" target="_blank" class="keywords">mine</a>s  the  meaning  of
          range expressions and equi<a href="/tag/valence/" target="_blank" class="keywords">valence</a> classes) and string collation.

   <strong>LC_CTYPE</strong>
          for  regular  expression  matching,ch<a href="/tag/ara/" target="_blank" class="keywords">ara</a>cter   classification,conversion,case-sensitive   comparison,and  wide  ch<a href="/tag/ara/" target="_blank" class="keywords">ara</a>cter
          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 sep<a href="/tag/ara/" target="_blank" class="keywords">ara</a>tor).

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

   The  argument  <span style="text-<a href="/tag/decoration/" target="_blank" class="keywords">decoration</a>: underline;"&gt;locale</span> is a pointer to a ch<a href="/tag/ara/" target="_blank" class="keywords">ara</a>cter string containing the
   <a href="/tag/required/" target="_blank" class="keywords">required</a> setting of <span style="text-<a href="/tag/decoration/" target="_blank" class="keywords">decoration</a>: underline;"&gt;category</span>.  Such a string  is  either  a  well-k<a href="/tag/Now/" target="_blank" class="keywords">Now</a>n
   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-<a href="/tag/decoration/" target="_blank" class="keywords">decoration</a>: 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,f<a href="/tag/irs/" target="_blank" class="keywords">irs</a>t (regardless  of  <span style="text-<a href="/tag/decoration/" target="_blank" class="keywords">decoration</a>: 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 f<a href="/tag/irs/" target="_blank" class="keywords">irs</a>t 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 ch<a href="/tag/ara/" target="_blank" class="keywords">ara</a>cter set.

   A      locale      name      is      typically      of     the     form
   <span style="text-<a href="/tag/decoration/" target="_blank" class="keywords">decoration</a>: underline;"&gt;language</span>[_<span style="text-<a href="/tag/decoration/" target="_blank" class="keywords">decoration</a>: underline;"&gt;territory</span>][.<span style="text-<a href="/tag/decoration/" target="_blank" class="keywords">decoration</a>: underline;"&gt;codeset</span>][@<span style="text-<a href="/tag/decoration/" target="_blank" class="keywords">decoration</a>: underline;"&gt;modifier</span>],where <span style="text-<a href="/tag/decoration/" target="_blank" class="keywords">decoration</a>: underline;"&gt;language</span> is an ISO 639
   language  code,<span style="text-<a href="/tag/decoration/" target="_blank" class="keywords">decoration</a>: underline;"&gt;territory</span> is an ISO 3166 country code,and <span style="text-<a href="/tag/decoration/" target="_blank" class="keywords">decoration</a>: underline;"&gt;codeset</span> is a
   ch<a href="/tag/ara/" target="_blank" class="keywords">ara</a>cter 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  @R_308_<a href="/tag/404/" target="_blank" class="keywords">404</a>5@ion,by  using the
   multi-byte  and  wide  ch<a href="/tag/ara/" target="_blank" class="keywords">ara</a>cter  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
       decoration: underline;">LC_CTYPE=ISO-8859-1  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 .

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐