SlideShare a Scribd company logo
1 of 396
Download to read offline
谨将我们的工作献给
即将毕业离校的兄弟们 — 林晓鑫、刘德超、黄巍、周蓝
  珺、胡禹轩、王新喜、何春晓、崔剑、李浩。
            以及

      潘海东即将出世的小 Baby!




            – II –
0




                                   译者序
                                    LSP) 的 文         工作            实
     Linux System Prorgramming (
           工业                                  理
                              IBM
的         。           工作的同                                       的
  同 。 们 林晓鑫、王 、崔 春、                        、何春晓、            、李 、
  、    、      、        。     的                                   文献
                                    SMS@lilacbbs.com
  的       王        。刘文 、王 、刘德超、                、王新喜 同
校工作。        的        校           。                工业                 文
         作        的          工作 李         。
TeX
       的      工作                               文        进         。
                        LSP
          内               布        原 IBM                     (
     工程 )         晓(                             )的              们
                                SUN
    的业 时间对                进         的校         提出              的
  。 们的                           的同            。          们示       。
            程                                                  的
                                    Harbin Linux User Group
           们       示      。
  ,
                      程方              的                  工作以
的           的                    。         存      何                方式
  我们     :

Website : http://www.footoo.org
Twitter : http://twitter.com/cliffwoo
Email :cliffwoo@gmail.com 或 cliffwoo@footoo.org
Google Groups :http://groups.google.com/group/lspcn/

                                                              工业

                                                       2009   4   30




                                        – III –
0




                       版权声明
                                 文的   工作     工业
      Linux System Programming
                的          。文        程的
    IBM                                        ,
业     。
      Linux System Prorgramming 的   作 及原出          文
    程的                   。     原 作 及出     的出 、     、   作
    的                             。




                             – IV –
目录

译者序. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . III
版权声明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IV
第 1 章 简介和主要概念. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                            1
             程. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
 1.1                                                                                                                                                  1
               调 ............................................................
    1.1.1                                                                                                                                             2
    1.1.2 调              调 .......................................................                                                                    3
    1.1.3 C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .         3
    1.1.4 C              ............................................................                                                                 4
 1.2 API     ABI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .         4
    1.2.1 API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .      4
    1.2.2 ABI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .       5
 1.3       .....................................................................                                                                      5
                          SUS 的
    1.3.1 POSIX                                    ...............................................                                                    6
    1.3.2 C                  ..........................................................                                                               7
    1.3.3 Linux                  ........................................................                                                             7
    1.3.4                      .........................................................                                                              8
 1.4 Linux 程                 ..........................................................                                                               8
    1.4.1 文件 文件                          ....................................................                                                         8
               文件. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    1.4.2                                                                                                                                             9
    1.4.3                      .........................................................                                                             10
    1.4.4            ..............................................................                                                                  11
    1.4.5                ............................................................                                                                12
               文件. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    1.4.6                                                                                                                                            12
    1.4.7 文件                           空间 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .              13
    1.4.8 进程. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .        14
            程. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    1.4.9                                                                                                                                            15
    1.4.10 进程            ............................................................                                                                16
    1.4.11               ............................................................                                                                16
    1.4.12     .................................................................                                                                     17
    1.4.13     .................................................................                                                                     18
    1.4.14 进程间                 .........................................................                                                             18
    1.4.15 文件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .            19
               处理. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    1.4.16                                                                                                                                           19
                    程. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
 1.5                                                                                                                                                 22



                                                                         –V–
第 2 章 文件 I/O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .           23
           文件. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
 2.1                                                                                                                                                 24
                              调 .....................................................
    2.1.1 open()                                                                                                                                     24
    2.1.2 新文件                        .......................................................                                                         26
    2.1.3 新文件                    .........................................................                                                           26
    2.1.4 creat()              ..........................................................                                                            28
    2.1.5                                  ....................................................                                                      29
         read() 读 文件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
 2.2                                                                                                                                                 29
    2.2.1              ..............................................................                                                                30
    2.2.2 读                的               ....................................................                                                      31
                      读. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    2.2.3                                                                                                                                            32
    2.2.4                        .........................................................                                                           33
    2.2.5 read() 小                       .....................................................                                                       33
         write() 写 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
 2.3                                                                                                                                                 34
                 写 ..............................................................
    2.3.1                                                                                                                                            35
                      式. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    2.3.2                                                                                                                                            36
                      写. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    2.3.3                                                                                                                                            36
    2.3.4                        .........................................................                                                           36
    2.3.5 write() 小                      .....................................................                                                       37
    2.3.6 write() 的                  .......................................................                                                         37
 2.4 同步 I/O. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .       38
    2.4.1 fsync()           fdatasync() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .              38
    2.4.2                                  ....................................................                                                      39
    2.4.3 sync(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .      40
    2.4.4 O SYNC                     .......................................................                                                         41
    2.4.5 O DSYNC                   O RSYNC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                 41
 2.5        I/O. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   42
           文件. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
 2.6                                                                                                                                                 42
    2.6.1              ..............................................................                                                                43
 2.7     lseek()             ...........................................................                                                             44
    2.7.1 文件                        进                    .............................................                                               45
    2.7.2              ..............................................................                                                                46
    2.7.3        .................................................................                                                                   46
           读写. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
 2.8                                                                                                                                                 46
    2.8.1              ..............................................................                                                                47
           文件. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
 2.9                                                                                                                                                 47
 2.10I/O                 .............................................................                                                               49
    2.10.1 select() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .      50
    2.10.2                                 ....................................................                                                      52
    2.10.3 poll() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    57
    2.10.4 poll()        select(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .         61

                                                                        – VI –
2.11内 内 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .     61
                 文件
      2.11.1                   .......................................................                                                           62
      2.11.2 页 存 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .     63
      2.11.3 页 写 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .     64
   2.12      .....................................................................                                                               65
第 3 章 缓冲输入输出 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                   66
 3.1               I/O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .       66
               小 ..............................................................
    3.1.1                                                                                                                                        67
    3.1.2      I/O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .     68
    3.1.3 文件           ............................................................                                                              68
           文件. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
 3.2                                                                                                                                             69
            式. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    3.2.1                                                                                                                                        69
               文件                              文件. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    3.2.2                                                                                                                                        70
 3.3         ...................................................................                                                                 71
                       的 .......................................................
    3.3.1                                                                                                                                        71
             读
 3.4                         .........................................................                                                           71
    3.4.1 单       读 .........................................................                                                                    71
    3.4.2                                  ..................................................                                                    72
               的读 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    3.4.3                                                                                                                                        72
    3.4.4 读                            ....................................................                                                      73
    3.4.5 读       进 文件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                   74
             写
 3.5                   ............................................................                                                              75
    3.5.1 对 的                .........................................................                                                           75
    3.5.2 写 单                    .......................................................                                                         76
    3.5.3 写                  .........................................................                                                           76
    3.5.4 写       进                    ....................................................                                                      77
               I/O 示 程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    3.5.5                                                                                                                                        77
 3.6         ...................................................................                                                                 79
    3.6.1                              ....................................................                                                      80
 3.7               ..............................................................                                                                81
             文件
 3.8                         .........................................................                                                           82
               的文件
 3.9                                       ..................................................                                                    83
 3.10          .................................................................                                                                 83
 3.11 程        .................................................................                                                                 85
               文件
    3.11.1                       .......................................................                                                         85
                       操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    3.11.2                                                                                                                                       86
             I/O 的
 3.12对                           .......................................................                                                         87
 3.13      .....................................................................                                                                 88



                                                                      – VII –
第 4 章 高级文件 I/O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                   89
 4.1 散布 / 聚集 I/O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .               89
    4.1.1 readv()     writev() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                 90
 4.2 Event Poll        ...........................................................                                                                   96
                     新的 epoll 实 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    4.2.1                                                                                                                                            96
    4.2.2       epoll . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .          97
                Epoll 件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    4.2.3                                                                                                                                            99
                         件                                  件. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    4.2.4                                                                                                                                           101
 4.3 存 映射. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .          101
    4.3.1 mmap() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .        102
    4.3.2 munmap(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .           106
    4.3.3 存 映射 子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                      106
    4.3.4 mmap() 的               ......................................................                                                             108
    4.3.5 mmap() 的               ......................................................                                                             109
    4.3.6 调 映射的 小 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                           109
               映射             的
    4.3.7                                      ...............................................                                                      110
               映射             同步文件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    4.3.8                                                                                                                                           111
    4.3.9 映射提示. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .               112
          文件 I/O 提示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
 4.4                                                                                                                                                114
    4.4.1 posix fadvise() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .             114
                                   调 ................................................
    4.4.2 readahead()                                                                                                                               116
                  实           的操作提示. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    4.4.3                                                                                                                                           116
 4.5 同步 (Synchronized) 同步 (Synchronous) 及异步 ( Asynchronous) 操作 . .                                                                                  117
    4.5.1 异步 I/O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .          118
 4.6 I/O 调          I/O 性能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                    120
    4.6.1            ............................................................                                                                   120
    4.6.2 调       的 能.......................................................                                                                        121
             进读
    4.6.3                  .........................................................                                                                122
                              的 I/O 调
    4.6.4                                                  .........................................                                                125
                I/O 性能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    4.6.5                                                                                                                                           125
 4.7       .....................................................................                                                                    132
第 5 章 进程管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .              133
 5.1 进程 ID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .      133
                进程 ID. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    5.1.1                                                                                                                                           134
    5.1.2 进程              ............................................................                                                              134
    5.1.3 pid t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   135
                进程 ID                      进程的 ID. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    5.1.4                                                                                                                                           135
          新进程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
 5.2                                                                                                                                                136
                                    调 ..................................................
    5.2.1 exec                                                                                                                                      136
                            调 ......................................................
    5.2.2 fork()                                                                                                                                    139

                                                                      – VIII –
进程. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    5.3                                                                                                                                                     143
                                  进程的方式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
       5.3.1                                                                                                                                                144
       5.3.2        atexit(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   145
       5.3.3        on exit( ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .      146
       5.3.4        SIGCHLD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .           146
                          的子进程. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    5.4                                                                                                                                                     147
                                  进程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
       5.4.1                                                                                                                                                150
                                  子进程的方 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
       5.4.2                                                                                                                                                152
                    BSD 的 wait3() wait4() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
       5.4.3                                                                                                                                                153
                                                新进程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
       5.4.4                                                                                                                                                155
                         进程. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
       5.4.5                                                                                                                                                158
    5.5                   .................................................................                                                                 158
                    实              ( )ID、 效                                                      存设 的
       5.5.1                                                             ( )ID                                                  ( )ID . . . . . .           159
                         实                                           存设 的
       5.5.2                                ( )ID                                                  ( )ID . . . . . . . . . . . . . . . . . . . .            160
                             效
       5.5.3                                          ID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .      161
                                                              ID 的方式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
       5.5.4        BSD                      ID                                                                                                             161
                                                                         ID 的方式. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
       5.5.5        HP-UX                              ID                                                                                                   162
                    操作                         ID 的                 方 ......................................
       5.5.6                       ID                                                                                                                       163
                    对 存设 的                            ID 的
       5.5.7                                                                .......................................                                         163
       5.5.8                       ID               ID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .      163
                       进程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    5.6                                                                                                                                                     164
                             相的                      调 .............................................
       5.6.1                                                                                                                                                165
                       进程 相 的                             调 ...........................................
       5.6.2                                                                                                                                                167
                         的进程
       5.6.3                                          ..................................................                                                    168
                    进程. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    5.7                                                                                                                                                     169
    5.8              .....................................................................                                                                  171
第 6 章 高级进程管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                              172
 6.1 进程调 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                  172
    6.1.1    O             ...........................................................                                                                      173
    6.1.2 时间 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                    173
                      进程 Vs. 处理                                   进程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    6.1.3 I/O                                                                                                                                               174
               调 ............................................................
    6.1.4                                                                                                                                                   175
             程. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    6.1.5                                                                                                                                                   175
        出处理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
 6.2                                                                                                                                                        176
             理
    6.2.1                ............................................................                                                                       176
             出处理 方 的
    6.2.2                                                            ......................................                                                 177
 6.3 进程              ..............................................................                                                                         178
    6.3.1 nice() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .            179
    6.3.2 getpriority() setpriority(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                                  180
    6.3.3 I/O                ..........................................................                                                                     181

                                                                           – IX –
6.4 处理             ............................................................                                                       182
      6.4.1 sched getaffinity() sched setaffinity() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                          183
   6.5 实时        .................................................................                                                       185
                 实时
      6.5.1                 .......................................................                                                      186
              时
      6.5.2                               .............................................                                                  186
      6.5.3 Linux 的实时           ...................................................                                                      187
      6.5.4 Linux 调                         ............................................                                                 188
      6.5.5 设 调             .......................................................                                                      192
      6.5.6 sched rr get interval() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .      195
                 实时进程的              提 ...........................................
      6.5.7                                                                                                                              197
                 性 ..............................................................
      6.5.8                                                                                                                              197
   6.6           .................................................................                                                       200
      6.6.1           ............................................................                                                       201
                   设
      6.6.2                           ...............................................                                                    204
第 7 章 文件与目录管理. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .               207
 7.1 文件及               .........................................................                                                         207
    7.1.1     stat       .......................................................                                                         207
    7.1.2     .................................................................                                                          211
    7.1.3        ..............................................................                                                          213
    7.1.4 扩展属性. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    215
 7.2      .....................................................................                                                          223
              工作
    7.2.1                .......................................................                                                         224
    7.2.2          ............................................................                                                          229
    7.2.3          ............................................................                                                          230
    7.2.4 读        内 .......................................................                                                             231
 7.3      .....................................................................                                                          235
    7.3.1        ..............................................................                                                          236
    7.3.2          ............................................................                                                          237
    7.3.3          ............................................................                                                          239
                文件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
 7.4                                                                                                                                     240
    7.4.1     .................................................................                                                          240
    7.4.2     .................................................................                                                          241
 7.5 设备       .................................................................                                                          242
              设备
    7.5.1                .......................................................                                                         243
    7.5.2                .......................................................                                                         243
 7.6          .................................................................                                                          244
          文件 件. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
 7.7                                                                                                                                     246
    7.7.1        inotify . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   247
    7.7.2     .................................................................                                                          247


                                                                   –X–
7.7.3 inotify 件. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .      249
        7.7.4                .......................................................                                                            252
        7.7.5       inotify        ....................................................                                                         253
                      件          小..................................................
        7.7.6                                                                                                                                   254
                    inotify 实 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
        7.7.7                                                                                                                                   255
第 8 章 内存管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .          256
 8.1 进程        空间. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .        256
    8.1.1 页 页 调 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                   256
    8.1.2 存                 .........................................................                                                           257
           内存
 8.2                  ............................................................                                                              258
    8.2.1             ............................................................                                                              260
    8.2.2 调               内存 小 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                    262
              内存的
    8.2.3                             ....................................................                                                      264
    8.2.4 对 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   266
           段的 理. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
 8.3                                                                                                                                            270
           存     映射 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
 8.4                                                                                                                                            271
                      存             映射 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    8.4.1                                                                                                                                       272
    8.4.2 映射 /dev/zero. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                 274
           存
 8.5                        .........................................................                                                           275
               malloc usable size() malloc trim() 进 调 . . . . . . . . . . . . . . . . .
    8.5.1                                                                                                                                       277
 8.6 调 内存             ............................................................                                                              278
    8.6.1                       .......................................................                                                         278
             的
 8.7                  ............................................................                                                              280
              的
    8.7.1                       .......................................................                                                         282
    8.7.2             ............................................................                                                              283
                      的内存
 8.8                                                      ..........................................                                            284
 8.9 存       操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .     286
              设 ............................................................
    8.9.1                                                                                                                                       286
    8.9.2             ............................................................                                                              287
    8.9.3             ............................................................                                                              288
    8.9.4             ............................................................                                                              289
    8.9.5             ............................................................                                                              290
 8.10内存        .................................................................                                                                291
                               空间 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    8.10.1                                                                                                                                      291
                               空间 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    8.10.2                                                                                                                                      292
    8.10.3 内存         ............................................................                                                              293
              的
    8.10.4                  .........................................................                                                           294
              页                理内存
    8.10.5                                                    ........................................                                          294
           性存
 8.11                                 ....................................................                                                      295
    8.11.1 超              内存                    ...............................................                                                 295

                                                                      – XI –
第 9 章 信号 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    297
 9.1           .................................................................                                                                  297
    9.1.1                     .........................................................                                                           298
                          的
    9.1.2 Linux                           ...................................................                                                     298
                   理. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
 9.2                                                                                                                                              304
    9.2.1               ............................................................                                                              305
             子. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    9.2.2                                                                                                                                         306
    9.2.3                     .........................................................                                                           309
    9.2.4 映射                                          .............................................                                               310
 9.3           .................................................................                                                                  311
    9.3.1      .................................................................                                                                  311
             子. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    9.3.2                                                                                                                                         312
    9.3.3 给自                            ....................................................                                                      312
    9.3.4 给        进程                                 .............................................                                               313
 9.4       .....................................................................                                                                  313
                   的
    9.4.1                                         ...............................................                                                 314
          集...................................................................
 9.5                                                                                                                                              316
    9.5.1 更 的               集               ..................................................                                                    316
 9.6           .................................................................                                                                  317
                   处理
    9.6.1                               ....................................................                                                      318
                        集 .........................................................
    9.6.2                                                                                                                                         318
                   理. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
 9.7                                                                                                                                              319
    9.7.1 siginfo t             ........................................................                                                          321
    9.7.2 si code 的               世 ..................................................                                                            323
                             的
 9.8                                        ..................................................                                                    325
             子. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    9.8.1                                                                                                                                         326
 9.9       .....................................................................                                                                  326
第 10 章 时间. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .      328
 10.1时间的                   .........................................................                                                              330
    10.1.1 原    示. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .          330
    10.1.2                 .........................................................                                                              331
    10.1.3                 .........................................................                                                              331
                    时间 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    10.1.4                                                                                                                                        332
             进程时间
    10.1.5                               ..................................................                                                       333
 10.2POSIX 时 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .          333
 10.3时间          ..............................................................                                                                   334
             时间. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
 10.4                                                                                                                                             335
             更的
    10.4.1                           ....................................................                                                         336
    10.4.2                     .......................................................                                                            337
             进程时间 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    10.4.3                                                                                                                                        338

                                                                      – XII –
时间. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    10.5设                                                                                                                                          339
                         时 .........................................................
      10.5.1                                                                                                                                       340
      10.5.2 设 时间的                                         ...........................................                                             340
             时间. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    10.6                                                                                                                                           341
                  时 ............................................................
    10.7调校                                                                                                                                         343
    10.8             ..............................................................                                                                346
      10.8.1                             ....................................................                                                      347
      10.8.2 Linux 的实时                     ...................................................                                                     347
      10.8.3                             ....................................................                                                      348
      10.8.4 实           的             方 ...............................................                                                           350
      10.8.5 sleep 的                         实 ............................................                                                        353
      10.8.6 超 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   353
      10.8.7             ............................................................                                                              354
    10.9 时 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   354
      10.9.1 单的                .........................................................                                                           354
      10.9.2 间      时 .........................................................                                                                    355
                    时 .........................................................
      10.9.3                                                                                                                                       358
      10.9.4 设      时 .........................................................                                                                    360
附录 A GCC 对 C 语言的扩展 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                                 365
 A.1 GNU C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   365
 A.2 内         .................................................................                                                                   365
          内 .................................................................
 A.3                                                                                                                                               366
 A.4        ...................................................................                                                                    367
 A.5        ...................................................................                                                                    368
            的
 A.6                     ............................................................                                                              368
          内存的
 A.7                           .........................................................                                                           368
          调
 A.8                                               ...............................................                                                 369
 A.9 将                    deprecated . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .               369
 A.10将                    used. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .        370
            或
 A.11将                                   unused . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .          370
               进                   (pack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
 A.12将                                                                                                                                             370
               的内存对
 A.13                                          .................................................                                                   371
                                   存
 A.14将                                             ...............................................                                                 372
 A.15          .................................................................                                                                   372
               式的
 A.16                              .......................................................                                                         373
               的内存对
 A.17                                        ..................................................                                                    374
                         的
 A.18                                        ..................................................                                                    375
 A.19                              .......................................................                                                         375
 A.20 Case                           ......................................................                                                        376
                              的             操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
 A.21void                                                                                                                                          377
                    更                        更的                      性...................................
 A.22                                                                                                                                              377

                                                                      – XIII –
附录 B 参考书目 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   380
           程 设 的相
 B.1 C                                      .............................................                                               380
 B.2 Linux 程的相                  ...................................................                                                     381
 B.3 Linux 内 的相                 ...................................................                                                     381
 B.4 操作     设 的相                        ...............................................                                                 382




                                                                – XIV –
1




                              第 1 章 简介和主要概念

                         的                             程的              将                            写
件的相                           。            件                   的                内
进               。        的        件                                        、            、调          、           工
                                                shell、文
                : 即 GNU Core Utilities,                                的           工    集                       我
    (                                                    GNU
们           的                         进程        。        程                     内                            以
                     )                                                                  C
                         件。                     件(                                              程
 ”      ”                                                        (high-level)GUI
    更       的                                    们                                  。           程
            的时间          写            件                            。                            理               程
        程                     。                      作             的                                    更
        的                     程       我们        写的       件的                    。
                的                          Linux 上的                程的          。 Linux          Linus Torvalds
                 内       散的                写的                      操作           。
                                                     Unix                                   Linux     Unix
        同的               理                                                         自    的原                  方方
                                      Linux             Unix     Linux
        的                     实       能的            。    的                                  程的          内
                                                                       Linux
    何           的 Unix                      的。然                            内            Linux 相
的 Unix                        自       出的                                           的新       的       调
                                                       Linux
同的               新       性。

1.1 系统编程

                    的                     的 Unix        程                           程。
上                                     的                                                     上进              工作
        Unix                                                       X Window
时 我们                              的 Unix                                   以                        上
                                                       API。
Linux 程         设        的。然                                           程           的                            何
                                                                                            –
        make 的                                                 上           的            程的 API。
                                                Linux
            们                     程                    程相              们           同                同       。
        程           出的                         程               对       工作的              的       件   操作
                     的            然        们                       调       上的           。               写的
    的                上                             上         相     的内          。                的


                                                       –1–
1


    程           程                    程 (或         相                            件               的        。
                                                      ),
                                  离        的                               程的                  然              的
的方                      式的       程        同               。
                        我们                                                                     件(
                                                                                   web                  Javascript
                                      (    C# 或                                程                   离           程
PHP                                                       Java
        更       的            展。然                      展                    示                   程的             。实
上                               写 Javascript                     C#
程。更进             步                    Java 程               然       以                   程                      同
                            PHP
理           内    的      能        何            写出更             的        。
                        程的        展                                的 Unix          Linux 的程               然
            程                                                      内       提       的       。                      的
                                      C               C
        程           Apache、 bash、 cp、 Emacs、 init、 gcc、 gdb、 glibc、 ls、 mv、 vim
                                          时的。
    X
                        程的                                 内                   或                   设备          的内
  。                                        程的                          将               内            。             将
                内       上的内           (        内               对                                          空间
            程。同                       程                   以及相              的内                                     展
        。设备                 程              程                       的
                 。
                                           我               Linux 上             写                        程         内
                    提                  我      何                                    设                小             相
    C                                                                 Linux
                              Linux 提                          的           调               们        何工作的
            Unix
            将               的                         。
                    程                             调                                                                   的
                                                               C           C
             。

1.1.1 系统调用

                    程              调      。           调    (               写                                   操作
                                                                                    syscalls
                        或                         空间                  文                                               内
  (          的                   的        调       。        调                               我们           的 read()
                            的 get thread area()
write()                                                   set tid address()。
        Linux 实         的        调                                             操作              。                  i386

                                                      –2–
1


        的        调                                          相                        的 Windows                 上        。
                                     300
Linux 的内                                                (                                                 实             自的
                                                                  Alpha       i386      PowerPC)
        调       。                同             间的                 调       存                的          。然               90% 以
上           调                的           上       实              。         上              的                                  的
内       。

1.1.2 调用系统调用

                空间           程               能                      内     。                                    的
    空间程                                  内       的              或       操作内                  。相           内             提
                                 空间程             能                                  内                 调                     调
    。                程               能                                          内                              内
    的           。                        同的                         相同                       i386 上                空间程
                    0x80 的                                                           将                                  内
                                              int
的                    内                       处理              的                                            0x80 的处理
                                                    的             调     处理            。
                程                        存                  内                                调                          。
    调                                               。                       上                         调
                                         0                   i386                                              5(
                        空间程                                                 将5        写               存            。
open()                                                      int                               eax
                                         的方式进                   处理。             以 i386                    存
            能的                   存                                                                存                     。对
                                             ebx、 ecx、 edx、 esi                      edi                   5
                    的超                       的              调                        的       存                     空间       存
                             5
                 的       存       即    。       然                             调                     的       。
                     处理              调       的方式                同                    的                    的。作
        程                                           内                     处理             调       的。                内
                     的           调            的                                                       自    处理。
                                                                                              C

1.1.3 C 库

                (libc                          程            的           。                         的
        C                    Unix                                                                               C
                      的                                     的                   提                     或     方       的
调       。            的 Linux                                          GNU libc 提
                                                        C                                                 glibc
[gee-lib-see] 或          更           [glib-see].
                      提              超                          展示的内            。                 的C                        提
        GNU C                                                                                                   glibc

                                                                –3–
1


              调                 程                                 工       。

1.1.4 C 编译器

                                的C                                                工       集(gcc 。原
          Linux                                           GNU                                                    gcc
              的 cc                   。                            示 GNU C Compiler。
GNU                     C                             GCC
的                           进        。时                                                                 的            。然
                                                              gcc             GNU
                            调                                                         我            gcc 的时
        gcc                          C
              上     文       的                     程       。
                                     gcc
                                实                                                                  的 ABI(
                                         C            (       ”C                      ”)                         ”APIs
                                                                                      的                      程的
    ABIs”           )           Unix          (           Linux               )
              。

1.2 API 和 ABI

                            将        程            们                   们写的程                     以                         提
         的            上。        们                 们自          的 Linux                      上        的程           能
              的 Linux                    同时               以                                         的            更新的
                                                                                      Linux
              上。
Linux
                                             性的                                        相            的                    集
                        程            (API                                     程            进        (ABI
                         件       同         间的              。

1.2.1 API

                        件              间                                  的           。            提
        API
              以         的方式) 的方式进                                         程            段(                            的
    (                                                         :
                                     以调                       程           段(                                     。
                            上       示文       的 API            能       对                    示文            提
的。                                            我们                      的                    实   对 API 的实           。
              API                                                         API
                  们                                                               理                          的
                        API
    上                                        。 API 的                                           件)            给 API 的
                  API                                                 (
         实        提         何实       内                    能                       的        子             或
         或                               。 API                的                                件            同    的 API
时                           。                                                 API 的实           上能                。
                                                  API

                                                          –4–
1


            实       的    子                                                            实
                                  API           C                             C                        API
                                的                              处理         。
                              我们                      及                                   的
                                                            API                                    IO。 Linux
            程                 的 API 将                  的                          。

1.2.2 ABI

                                                                  的               的        上         或
        API                                         ABI
    件               间的        进           。                                   何   自                  何       内
以及          进            。 ABI                          进                             段              能
何           同       ABI 的            上                 作                  新        。
                                的             调              、            、   存            、           调       、
        ABI
 、                       进            式。以调                                                 何       调
    何                         存                                           以及调              何提                的
 。
                                                           同的操作           (            i386 上的 Unix 操作
                         的 ABI        然                                           效。相                  Linux
内的操作                                      自             的 ABI                                  相       。
                                                                          ABI
的 ABI           及                     的                      的     存      或               。                Linux
                                                自      的 ABI 集                实上 我们以                           的
                                                                  。
                        ABI             alpha         x86-64
                    程               ABI 的                                             。        ABI
上的                                工       (tooltrain                      、                        。
    ABI 的相              内             以             写出更               的                    写                   或
        工       时的绝                   (       实                           程。
        我们          以                 上         Linux 上                   的工           内      实      的 ABI
    。

1.3 标准

                            程             的                           程                                    。
        Unix                                                Unix
                                          的           。                               性                。
Unix
                的世                                         将                                   方           。


                                                            –5–
1


的                                             上                                     们。 Linux
                                                          Linux
                       的                          POSIX         Single Unix Specification(SUS)
                  内                                          Unix 操作                  上的 C API
                           POSIX         SUS
们      效的                  的 Unix                                 程                            出
的 API 集。

1.3.1 POSIX 和 SUS 的历史

                                      子工程                  (IEEE                                     的
           1980                                                                         Unix
                          的相      工作。自                件           (Free Software Movement 的
                                                                   (
       Richard Stallman                   POSIX                               pahz-icks
                                                          操作                   。
Portable Operating System Interface(
           1988                                                       IEEE std 1003.1-1988(
                       。 1990
POSIX1988                                 IEEE             POSIX                     IEEE std 1003.1-
                          。            性的实时                 程
1990(POSIX1990                                                                 IEEE Std 1003.1b-1993
                                                                                                         式
(POSIX 1993 or POSIX.1b)              IEEE Std 1003.1c-1995(POSIX 1995 or POSIX.1c)
    文。 2001                           性              POSIX1990 的               上               单     的
                                                           新的                                            布
       IEEE Std 1003.1-2001 (POSIX 2001)。                                 IEEE Std 1003.1-2004
                           的                                                   以 2004                    新
    2004     4                        POSIX                       POSIX.1
       。
                                                                  的
           1980                1990                 Unix                                    ”Unix        ”
                      处            的将          自 的 Unix                                                  的
                                                                               ”Unix”。
                                                                                               工业
Unix                      Open Software Foundation(OSF                     X/Open
-The Open Group。 The Open Group 提                            、                             。    1990
                                       的时                                       布         单
           Unix                                      The Open Group                            UNIX
      (Single UNIX Specification                     。相                       的 POSIX
                                              SUS                                                  SUS
       的                      。                                       新的 POSIX             。
                                          SUS
                      的 SUS       布                                        的
                                         1994              SUSv1                                Unix 95.
              的 SUS        布                   相     的                                                   的
                                  1997                                        UNIX 98.
                  新的 SUS,SUSv3            布                           的
SUS                                               2002                                    Unix 03.SUSv3
                                                                          。                    我将
                   IEEE Std 1003.1-2001
                  的        调                         提及。我将提及 POSIX
POSIX                                                                                          SUS
                      (                                            的          超集
                                      SUS       POSIX.1

                                                    –6–
1


的                         扩展                的 POSIX.1              提      的       能 –APUE S2.2.3        。

1.3.2 C 语言标准

                                Brian Kernighan 的                  作      C程       设
        Dennis Ritchie                                                                              (Prentice
Hall) 自 1978                出                                 式的 C                     的        。
的C                                           的                                                     程的
                K&R C。 C                                  Basic
        。                 对                 时        相            的       进
                (ANSI                                                             方        的C
                                1983
                                 进      新的       性 同时                                   的               。
                                                                          C++
        程                                                                 。 1990
                              ANSI C              1989
  (ISO                  ANSI C 进                                     ISO C90。
                                    布            新           (        然
            1995          ISO                                                                           ISO
                   的          ISO C99 更新                   的内             进            新的
C95。 1999
                、新               、               、 C++                    新的               。
inline

1.3.3 Linux 和标准

                                            POSIX 以及 SUS                      提
                        Linux                                                          SUSv3        POSIX.1
        的                        的实时(POSIX.1b)                       程 (POSIX.1c)              。更           的
                          提                                           的        。                   满
        Linux                        POSIX       SUS
的           即                                                                 SUSv3 实       的
                        bug。 Linux                         POSIX.1
    POSIX 或                     方       (            Linux 的                           以我               式
                     SUS
布 Linux          POSIX 或                        的。
                                 SUS
                                                                                                    gcc 提
                              Linux               gcc C                   ISO C99
                   的扩展                  扩展                                        相            。
            C                                            GNU C。
                            的                的                            子                    。
        Linux                                                                                           C
                        的        将          的                             。        进
以                的 glibc                     。               gcc 扩展                对            新的 gcc
布                                                                   gcc 将                  的            的C
                                        C
程       。          的          Linux 内                    调     的                           调        Linux 内
    的              上实                                    。
                同 的 Linux        布                                                 (LSB                     。
                                                             Linux
                                (            自
LSB             Linux                                             [Free Standard Group])

                                                     –7–
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)
LSP Cn Alpha(Revision 77)

More Related Content

What's hot

Canon Eos 3000 N Rus
Canon Eos 3000 N RusCanon Eos 3000 N Rus
Canon Eos 3000 N Rusguest315b36d
 
10 f z_u
10 f z_u10 f z_u
10 f z_u4book
 
http://vnx.su/ skoda a5 octavia amundsen navigation system Руководство по экс...
http://vnx.su/ skoda a5 octavia amundsen navigation system Руководство по экс...http://vnx.su/ skoda a5 octavia amundsen navigation system Руководство по экс...
http://vnx.su/ skoda a5 octavia amundsen navigation system Руководство по экс...skodaruk
 
Dir 605 A1 中文实用手册
Dir 605 A1 中文实用手册Dir 605 A1 中文实用手册
Dir 605 A1 中文实用手册guest630ab00
 
ແບບຮຽນ ສືກສາພົນລະເມືອງ ມ7
ແບບຮຽນ ສືກສາພົນລະເມືອງ ມ7ແບບຮຽນ ສືກສາພົນລະເມືອງ ມ7
ແບບຮຽນ ສືກສາພົນລະເມືອງ ມ7bounnao pathoumma
 
http://vnx.su/ skoda octavia a5 columbus navigation system руководство по экс...
http://vnx.su/ skoda octavia a5 columbus navigation system руководство по экс...http://vnx.su/ skoda octavia a5 columbus navigation system руководство по экс...
http://vnx.su/ skoda octavia a5 columbus navigation system руководство по экс...skodaruk
 
BÁO CÁO THUYẾT MINH TỔNG HỢP ĐIỀU CHỈNH QUY HOẠCH SỬ DỤNG ĐẤT ĐẾN NĂM 2020 VÀ...
BÁO CÁO THUYẾT MINH TỔNG HỢP ĐIỀU CHỈNH QUY HOẠCH SỬ DỤNG ĐẤT ĐẾN NĂM 2020 VÀ...BÁO CÁO THUYẾT MINH TỔNG HỢP ĐIỀU CHỈNH QUY HOẠCH SỬ DỤNG ĐẤT ĐẾN NĂM 2020 VÀ...
BÁO CÁO THUYẾT MINH TỔNG HỢP ĐIỀU CHỈNH QUY HOẠCH SỬ DỤNG ĐẤT ĐẾN NĂM 2020 VÀ...nataliej4
 
Robert Sokolowski εισαγωγή στη φαινομενολογία
Robert Sokolowski   εισαγωγή στη φαινομενολογίαRobert Sokolowski   εισαγωγή στη φαινομενολογία
Robert Sokolowski εισαγωγή στη φαινομενολογίαLoanna Empiridou
 
O9i Mv[1]
O9i Mv[1]O9i Mv[1]
O9i Mv[1]lymzic
 
ປື້ມຄຸູ່ມືຄູ ວິຊາ ເຄມີສາດ ມ7
ປື້ມຄຸູ່ມືຄູ ວິຊາ ເຄມີສາດ ມ7ປື້ມຄຸູ່ມືຄູ ວິຊາ ເຄມີສາດ ມ7
ປື້ມຄຸູ່ມືຄູ ວິຊາ ເຄມີສາດ ມ7bounnao pathoumma
 
Zahirgaanii geree
Zahirgaanii gereeZahirgaanii geree
Zahirgaanii gereeNara Bn
 
ປື້ມຄຸູ່ມືຄູ ວິຊາ ຊີວະວິທະຍາ ມ7
ປື້ມຄຸູ່ມືຄູ ວິຊາ ຊີວະວິທະຍາ ມ7ປື້ມຄຸູ່ມືຄູ ວິຊາ ຊີວະວິທະຍາ ມ7
ປື້ມຄຸູ່ມືຄູ ວິຊາ ຊີວະວິທະຍາ ມ7bounnao pathoumma
 
《Axure快速原型设计》
《Axure快速原型设计》《Axure快速原型设计》
《Axure快速原型设计》Ryan Xie
 
74.1. дбн в.2.3 4 2015. автомобільні дороги.
74.1. дбн в.2.3 4 2015. автомобільні дороги.74.1. дбн в.2.3 4 2015. автомобільні дороги.
74.1. дбн в.2.3 4 2015. автомобільні дороги.ssuser6b7473
 
Реформа публічної адміністрації в Україні: Проекти концепції та законів
Реформа публічної адміністрації в Україні: Проекти концепції та законівРеформа публічної адміністрації в Україні: Проекти концепції та законів
Реформа публічної адміністрації в Україні: Проекти концепції та законівCentre of Policy and Legal Reform
 

What's hot (18)

Fizika 7 boyko
Fizika 7 boykoFizika 7 boyko
Fizika 7 boyko
 
Canon Eos 3000 N Rus
Canon Eos 3000 N RusCanon Eos 3000 N Rus
Canon Eos 3000 N Rus
 
10 f z_u
10 f z_u10 f z_u
10 f z_u
 
http://vnx.su/ skoda a5 octavia amundsen navigation system Руководство по экс...
http://vnx.su/ skoda a5 octavia amundsen navigation system Руководство по экс...http://vnx.su/ skoda a5 octavia amundsen navigation system Руководство по экс...
http://vnx.su/ skoda a5 octavia amundsen navigation system Руководство по экс...
 
аутсорсинг
аутсорсингаутсорсинг
аутсорсинг
 
Dir 605 A1 中文实用手册
Dir 605 A1 中文实用手册Dir 605 A1 中文实用手册
Dir 605 A1 中文实用手册
 
ແບບຮຽນ ສືກສາພົນລະເມືອງ ມ7
ແບບຮຽນ ສືກສາພົນລະເມືອງ ມ7ແບບຮຽນ ສືກສາພົນລະເມືອງ ມ7
ແບບຮຽນ ສືກສາພົນລະເມືອງ ມ7
 
http://vnx.su/ skoda octavia a5 columbus navigation system руководство по экс...
http://vnx.su/ skoda octavia a5 columbus navigation system руководство по экс...http://vnx.su/ skoda octavia a5 columbus navigation system руководство по экс...
http://vnx.su/ skoda octavia a5 columbus navigation system руководство по экс...
 
BÁO CÁO THUYẾT MINH TỔNG HỢP ĐIỀU CHỈNH QUY HOẠCH SỬ DỤNG ĐẤT ĐẾN NĂM 2020 VÀ...
BÁO CÁO THUYẾT MINH TỔNG HỢP ĐIỀU CHỈNH QUY HOẠCH SỬ DỤNG ĐẤT ĐẾN NĂM 2020 VÀ...BÁO CÁO THUYẾT MINH TỔNG HỢP ĐIỀU CHỈNH QUY HOẠCH SỬ DỤNG ĐẤT ĐẾN NĂM 2020 VÀ...
BÁO CÁO THUYẾT MINH TỔNG HỢP ĐIỀU CHỈNH QUY HOẠCH SỬ DỤNG ĐẤT ĐẾN NĂM 2020 VÀ...
 
Robert Sokolowski εισαγωγή στη φαινομενολογία
Robert Sokolowski   εισαγωγή στη φαινομενολογίαRobert Sokolowski   εισαγωγή στη φαινομενολογία
Robert Sokolowski εισαγωγή στη φαινομενολογία
 
O9i Mv[1]
O9i Mv[1]O9i Mv[1]
O9i Mv[1]
 
ປື້ມຄຸູ່ມືຄູ ວິຊາ ເຄມີສາດ ມ7
ປື້ມຄຸູ່ມືຄູ ວິຊາ ເຄມີສາດ ມ7ປື້ມຄຸູ່ມືຄູ ວິຊາ ເຄມີສາດ ມ7
ປື້ມຄຸູ່ມືຄູ ວິຊາ ເຄມີສາດ ມ7
 
Zahirgaanii geree
Zahirgaanii gereeZahirgaanii geree
Zahirgaanii geree
 
ປື້ມຄຸູ່ມືຄູ ວິຊາ ຊີວະວິທະຍາ ມ7
ປື້ມຄຸູ່ມືຄູ ວິຊາ ຊີວະວິທະຍາ ມ7ປື້ມຄຸູ່ມືຄູ ວິຊາ ຊີວະວິທະຍາ ມ7
ປື້ມຄຸູ່ມືຄູ ວິຊາ ຊີວະວິທະຍາ ມ7
 
《Axure快速原型设计》
《Axure快速原型设计》《Axure快速原型设计》
《Axure快速原型设计》
 
74.1. дбн в.2.3 4 2015. автомобільні дороги.
74.1. дбн в.2.3 4 2015. автомобільні дороги.74.1. дбн в.2.3 4 2015. автомобільні дороги.
74.1. дбн в.2.3 4 2015. автомобільні дороги.
 
A Mercy To The Universe
A Mercy To The UniverseA Mercy To The Universe
A Mercy To The Universe
 
Реформа публічної адміністрації в Україні: Проекти концепції та законів
Реформа публічної адміністрації в Україні: Проекти концепції та законівРеформа публічної адміністрації в Україні: Проекти концепції та законів
Реформа публічної адміністрації в Україні: Проекти концепції та законів
 

More from Stanley Ho

How to write shared libraries!
How to write shared libraries!How to write shared libraries!
How to write shared libraries!Stanley Ho
 
用Raspberry PI學Linux驅動程式
用Raspberry PI學Linux驅動程式用Raspberry PI學Linux驅動程式
用Raspberry PI學Linux驅動程式Stanley Ho
 
1032 cs208 g operation system ip camera case share.v0.2
1032 cs208 g operation system ip camera case share.v0.21032 cs208 g operation system ip camera case share.v0.2
1032 cs208 g operation system ip camera case share.v0.2Stanley Ho
 
看日記學Git
看日記學Git看日記學Git
看日記學GitStanley Ho
 
2006 CIC 電子報
2006 CIC 電子報2006 CIC 電子報
2006 CIC 電子報Stanley Ho
 
Linux kernel 2.6 document
Linux kernel 2.6 documentLinux kernel 2.6 document
Linux kernel 2.6 documentStanley Ho
 
Bluespec Tutorial Helloworld
Bluespec Tutorial HelloworldBluespec Tutorial Helloworld
Bluespec Tutorial HelloworldStanley Ho
 
ACPI In Linux CN
ACPI In Linux CNACPI In Linux CN
ACPI In Linux CNStanley Ho
 
Interrupt In Linux 1.1
Interrupt In Linux 1.1Interrupt In Linux 1.1
Interrupt In Linux 1.1Stanley Ho
 
USB In A Nutshell - Making Sense of the USB Standard.
USB In A Nutshell - Making Sense of the USB Standard.USB In A Nutshell - Making Sense of the USB Standard.
USB In A Nutshell - Making Sense of the USB Standard.Stanley Ho
 
USB Discussion
USB DiscussionUSB Discussion
USB DiscussionStanley Ho
 
2002 5 1 Introduction To Amba Bus System
2002 5 1 Introduction To Amba Bus System2002 5 1 Introduction To Amba Bus System
2002 5 1 Introduction To Amba Bus SystemStanley Ho
 

More from Stanley Ho (15)

How to write shared libraries!
How to write shared libraries!How to write shared libraries!
How to write shared libraries!
 
Modern c
Modern cModern c
Modern c
 
Riffmci
RiffmciRiffmci
Riffmci
 
用Raspberry PI學Linux驅動程式
用Raspberry PI學Linux驅動程式用Raspberry PI學Linux驅動程式
用Raspberry PI學Linux驅動程式
 
1032 cs208 g operation system ip camera case share.v0.2
1032 cs208 g operation system ip camera case share.v0.21032 cs208 g operation system ip camera case share.v0.2
1032 cs208 g operation system ip camera case share.v0.2
 
看日記學Git
看日記學Git看日記學Git
看日記學Git
 
2006 CIC 電子報
2006 CIC 電子報2006 CIC 電子報
2006 CIC 電子報
 
Linux kernel 2.6 document
Linux kernel 2.6 documentLinux kernel 2.6 document
Linux kernel 2.6 document
 
Bluespec Tutorial Helloworld
Bluespec Tutorial HelloworldBluespec Tutorial Helloworld
Bluespec Tutorial Helloworld
 
E Book Mems
E Book MemsE Book Mems
E Book Mems
 
ACPI In Linux CN
ACPI In Linux CNACPI In Linux CN
ACPI In Linux CN
 
Interrupt In Linux 1.1
Interrupt In Linux 1.1Interrupt In Linux 1.1
Interrupt In Linux 1.1
 
USB In A Nutshell - Making Sense of the USB Standard.
USB In A Nutshell - Making Sense of the USB Standard.USB In A Nutshell - Making Sense of the USB Standard.
USB In A Nutshell - Making Sense of the USB Standard.
 
USB Discussion
USB DiscussionUSB Discussion
USB Discussion
 
2002 5 1 Introduction To Amba Bus System
2002 5 1 Introduction To Amba Bus System2002 5 1 Introduction To Amba Bus System
2002 5 1 Introduction To Amba Bus System
 

LSP Cn Alpha(Revision 77)

  • 1.
  • 2. 谨将我们的工作献给 即将毕业离校的兄弟们 — 林晓鑫、刘德超、黄巍、周蓝 珺、胡禹轩、王新喜、何春晓、崔剑、李浩。 以及 潘海东即将出世的小 Baby! – II –
  • 3. 0 译者序 LSP) 的 文 工作 实 Linux System Prorgramming ( 工业 理 IBM 的 。 工作的同 的 同 。 们 林晓鑫、王 、崔 春、 、何春晓、 、李 、 、 、 、 。 的 文献 SMS@lilacbbs.com 的 王 。刘文 、王 、刘德超、 、王新喜 同 校工作。 的 校 。 工业 文 作 的 工作 李 。 TeX 的 工作 文 进 。 LSP 内 布 原 IBM ( 工程 ) 晓( )的 们 SUN 的业 时间对 进 的校 提出 的 。 们的 的同 。 们示 。 程 的 Harbin Linux User Group 们 示 。 , 程方 的 工作以 的 的 。 存 何 方式 我们 : Website : http://www.footoo.org Twitter : http://twitter.com/cliffwoo Email :cliffwoo@gmail.com 或 cliffwoo@footoo.org Google Groups :http://groups.google.com/group/lspcn/ 工业 2009 4 30 – III –
  • 4. 0 版权声明 文的 工作 工业 Linux System Programming 的 。文 程的 IBM , 业 。 Linux System Prorgramming 的 作 及原出 文 程的 。 原 作 及出 的出 、 、 作 的 。 – IV –
  • 5. 目录 译者序. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . III 版权声明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IV 第 1 章 简介和主要概念. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 程. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1 1 调 ............................................................ 1.1.1 2 1.1.2 调 调 ....................................................... 3 1.1.3 C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.1.4 C ............................................................ 4 1.2 API ABI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.2.1 API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.2.2 ABI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.3 ..................................................................... 5 SUS 的 1.3.1 POSIX ............................................... 6 1.3.2 C .......................................................... 7 1.3.3 Linux ........................................................ 7 1.3.4 ......................................................... 8 1.4 Linux 程 .......................................................... 8 1.4.1 文件 文件 .................................................... 8 文件. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.4.2 9 1.4.3 ......................................................... 10 1.4.4 .............................................................. 11 1.4.5 ............................................................ 12 文件. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.4.6 12 1.4.7 文件 空间 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.4.8 进程. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 程. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.4.9 15 1.4.10 进程 ............................................................ 16 1.4.11 ............................................................ 16 1.4.12 ................................................................. 17 1.4.13 ................................................................. 18 1.4.14 进程间 ......................................................... 18 1.4.15 文件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 处理. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.4.16 19 程. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.5 22 –V–
  • 6. 第 2 章 文件 I/O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 文件. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1 24 调 ..................................................... 2.1.1 open() 24 2.1.2 新文件 ....................................................... 26 2.1.3 新文件 ......................................................... 26 2.1.4 creat() .......................................................... 28 2.1.5 .................................................... 29 read() 读 文件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 29 2.2.1 .............................................................. 30 2.2.2 读 的 .................................................... 31 读. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.3 32 2.2.4 ......................................................... 33 2.2.5 read() 小 ..................................................... 33 write() 写 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3 34 写 .............................................................. 2.3.1 35 式. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.2 36 写. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.3 36 2.3.4 ......................................................... 36 2.3.5 write() 小 ..................................................... 37 2.3.6 write() 的 ....................................................... 37 2.4 同步 I/O. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 2.4.1 fsync() fdatasync() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 2.4.2 .................................................... 39 2.4.3 sync(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 2.4.4 O SYNC ....................................................... 41 2.4.5 O DSYNC O RSYNC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 2.5 I/O. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 文件. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.6 42 2.6.1 .............................................................. 43 2.7 lseek() ........................................................... 44 2.7.1 文件 进 ............................................. 45 2.7.2 .............................................................. 46 2.7.3 ................................................................. 46 读写. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.8 46 2.8.1 .............................................................. 47 文件. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.9 47 2.10I/O ............................................................. 49 2.10.1 select() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 2.10.2 .................................................... 52 2.10.3 poll() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 2.10.4 poll() select(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 – VI –
  • 7. 2.11内 内 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 文件 2.11.1 ....................................................... 62 2.11.2 页 存 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 2.11.3 页 写 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 2.12 ..................................................................... 65 第 3 章 缓冲输入输出 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 3.1 I/O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 小 .............................................................. 3.1.1 67 3.1.2 I/O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 3.1.3 文件 ............................................................ 68 文件. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 69 式. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.1 69 文件 文件. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.2 70 3.3 ................................................................... 71 的 ....................................................... 3.3.1 71 读 3.4 ......................................................... 71 3.4.1 单 读 ......................................................... 71 3.4.2 .................................................. 72 的读 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4.3 72 3.4.4 读 .................................................... 73 3.4.5 读 进 文件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 写 3.5 ............................................................ 75 3.5.1 对 的 ......................................................... 75 3.5.2 写 单 ....................................................... 76 3.5.3 写 ......................................................... 76 3.5.4 写 进 .................................................... 77 I/O 示 程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.5.5 77 3.6 ................................................................... 79 3.6.1 .................................................... 80 3.7 .............................................................. 81 文件 3.8 ......................................................... 82 的文件 3.9 .................................................. 83 3.10 ................................................................. 83 3.11 程 ................................................................. 85 文件 3.11.1 ....................................................... 85 操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.11.2 86 I/O 的 3.12对 ....................................................... 87 3.13 ..................................................................... 88 – VII –
  • 8. 第 4 章 高级文件 I/O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 4.1 散布 / 聚集 I/O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 4.1.1 readv() writev() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 4.2 Event Poll ........................................................... 96 新的 epoll 实 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2.1 96 4.2.2 epoll . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 Epoll 件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2.3 99 件 件. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2.4 101 4.3 存 映射. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 4.3.1 mmap() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 4.3.2 munmap(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 4.3.3 存 映射 子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 4.3.4 mmap() 的 ...................................................... 108 4.3.5 mmap() 的 ...................................................... 109 4.3.6 调 映射的 小 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 映射 的 4.3.7 ............................................... 110 映射 同步文件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3.8 111 4.3.9 映射提示. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 文件 I/O 提示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4 114 4.4.1 posix fadvise() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 调 ................................................ 4.4.2 readahead() 116 实 的操作提示. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4.3 116 4.5 同步 (Synchronized) 同步 (Synchronous) 及异步 ( Asynchronous) 操作 . . 117 4.5.1 异步 I/O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 4.6 I/O 调 I/O 性能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 4.6.1 ............................................................ 120 4.6.2 调 的 能....................................................... 121 进读 4.6.3 ......................................................... 122 的 I/O 调 4.6.4 ......................................... 125 I/O 性能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.6.5 125 4.7 ..................................................................... 132 第 5 章 进程管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 5.1 进程 ID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 进程 ID. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.1.1 134 5.1.2 进程 ............................................................ 134 5.1.3 pid t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 进程 ID 进程的 ID. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.1.4 135 新进程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2 136 调 .................................................. 5.2.1 exec 136 调 ...................................................... 5.2.2 fork() 139 – VIII –
  • 9. 进程. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3 143 进程的方式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3.1 144 5.3.2 atexit(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 5.3.3 on exit( ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 5.3.4 SIGCHLD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 的子进程. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.4 147 进程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.4.1 150 子进程的方 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.4.2 152 BSD 的 wait3() wait4() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.4.3 153 新进程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.4.4 155 进程. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.4.5 158 5.5 ................................................................. 158 实 ( )ID、 效 存设 的 5.5.1 ( )ID ( )ID . . . . . . 159 实 存设 的 5.5.2 ( )ID ( )ID . . . . . . . . . . . . . . . . . . . . 160 效 5.5.3 ID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 ID 的方式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.5.4 BSD ID 161 ID 的方式. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.5.5 HP-UX ID 162 操作 ID 的 方 ...................................... 5.5.6 ID 163 对 存设 的 ID 的 5.5.7 ....................................... 163 5.5.8 ID ID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 进程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.6 164 相的 调 ............................................. 5.6.1 165 进程 相 的 调 ........................................... 5.6.2 167 的进程 5.6.3 .................................................. 168 进程. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.7 169 5.8 ..................................................................... 171 第 6 章 高级进程管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172 6.1 进程调 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172 6.1.1 O ........................................................... 173 6.1.2 时间 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 进程 Vs. 处理 进程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.1.3 I/O 174 调 ............................................................ 6.1.4 175 程. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.1.5 175 出处理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2 176 理 6.2.1 ............................................................ 176 出处理 方 的 6.2.2 ...................................... 177 6.3 进程 .............................................................. 178 6.3.1 nice() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 6.3.2 getpriority() setpriority(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180 6.3.3 I/O .......................................................... 181 – IX –
  • 10. 6.4 处理 ............................................................ 182 6.4.1 sched getaffinity() sched setaffinity() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 6.5 实时 ................................................................. 185 实时 6.5.1 ....................................................... 186 时 6.5.2 ............................................. 186 6.5.3 Linux 的实时 ................................................... 187 6.5.4 Linux 调 ............................................ 188 6.5.5 设 调 ....................................................... 192 6.5.6 sched rr get interval() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 实时进程的 提 ........................................... 6.5.7 197 性 .............................................................. 6.5.8 197 6.6 ................................................................. 200 6.6.1 ............................................................ 201 设 6.6.2 ............................................... 204 第 7 章 文件与目录管理. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 7.1 文件及 ......................................................... 207 7.1.1 stat ....................................................... 207 7.1.2 ................................................................. 211 7.1.3 .............................................................. 213 7.1.4 扩展属性. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 7.2 ..................................................................... 223 工作 7.2.1 ....................................................... 224 7.2.2 ............................................................ 229 7.2.3 ............................................................ 230 7.2.4 读 内 ....................................................... 231 7.3 ..................................................................... 235 7.3.1 .............................................................. 236 7.3.2 ............................................................ 237 7.3.3 ............................................................ 239 文件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.4 240 7.4.1 ................................................................. 240 7.4.2 ................................................................. 241 7.5 设备 ................................................................. 242 设备 7.5.1 ....................................................... 243 7.5.2 ....................................................... 243 7.6 ................................................................. 244 文件 件. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.7 246 7.7.1 inotify . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247 7.7.2 ................................................................. 247 –X–
  • 11. 7.7.3 inotify 件. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249 7.7.4 ....................................................... 252 7.7.5 inotify .................................................... 253 件 小.................................................. 7.7.6 254 inotify 实 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.7.7 255 第 8 章 内存管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256 8.1 进程 空间. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256 8.1.1 页 页 调 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256 8.1.2 存 ......................................................... 257 内存 8.2 ............................................................ 258 8.2.1 ............................................................ 260 8.2.2 调 内存 小 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262 内存的 8.2.3 .................................................... 264 8.2.4 对 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266 段的 理. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.3 270 存 映射 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.4 271 存 映射 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.4.1 272 8.4.2 映射 /dev/zero. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274 存 8.5 ......................................................... 275 malloc usable size() malloc trim() 进 调 . . . . . . . . . . . . . . . . . 8.5.1 277 8.6 调 内存 ............................................................ 278 8.6.1 ....................................................... 278 的 8.7 ............................................................ 280 的 8.7.1 ....................................................... 282 8.7.2 ............................................................ 283 的内存 8.8 .......................................... 284 8.9 存 操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286 设 ............................................................ 8.9.1 286 8.9.2 ............................................................ 287 8.9.3 ............................................................ 288 8.9.4 ............................................................ 289 8.9.5 ............................................................ 290 8.10内存 ................................................................. 291 空间 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.10.1 291 空间 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.10.2 292 8.10.3 内存 ............................................................ 293 的 8.10.4 ......................................................... 294 页 理内存 8.10.5 ........................................ 294 性存 8.11 .................................................... 295 8.11.1 超 内存 ............................................... 295 – XI –
  • 12. 第 9 章 信号 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297 9.1 ................................................................. 297 9.1.1 ......................................................... 298 的 9.1.2 Linux ................................................... 298 理. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.2 304 9.2.1 ............................................................ 305 子. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.2.2 306 9.2.3 ......................................................... 309 9.2.4 映射 ............................................. 310 9.3 ................................................................. 311 9.3.1 ................................................................. 311 子. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.3.2 312 9.3.3 给自 .................................................... 312 9.3.4 给 进程 ............................................. 313 9.4 ..................................................................... 313 的 9.4.1 ............................................... 314 集................................................................... 9.5 316 9.5.1 更 的 集 .................................................. 316 9.6 ................................................................. 317 处理 9.6.1 .................................................... 318 集 ......................................................... 9.6.2 318 理. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.7 319 9.7.1 siginfo t ........................................................ 321 9.7.2 si code 的 世 .................................................. 323 的 9.8 .................................................. 325 子. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.8.1 326 9.9 ..................................................................... 326 第 10 章 时间. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328 10.1时间的 ......................................................... 330 10.1.1 原 示. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330 10.1.2 ......................................................... 331 10.1.3 ......................................................... 331 时间 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.1.4 332 进程时间 10.1.5 .................................................. 333 10.2POSIX 时 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333 10.3时间 .............................................................. 334 时间. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.4 335 更的 10.4.1 .................................................... 336 10.4.2 ....................................................... 337 进程时间 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.4.3 338 – XII –
  • 13. 时间. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.5设 339 时 ......................................................... 10.5.1 340 10.5.2 设 时间的 ........................................... 340 时间. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.6 341 时 ............................................................ 10.7调校 343 10.8 .............................................................. 346 10.8.1 .................................................... 347 10.8.2 Linux 的实时 ................................................... 347 10.8.3 .................................................... 348 10.8.4 实 的 方 ............................................... 350 10.8.5 sleep 的 实 ............................................ 353 10.8.6 超 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353 10.8.7 ............................................................ 354 10.9 时 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354 10.9.1 单的 ......................................................... 354 10.9.2 间 时 ......................................................... 355 时 ......................................................... 10.9.3 358 10.9.4 设 时 ......................................................... 360 附录 A GCC 对 C 语言的扩展 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365 A.1 GNU C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365 A.2 内 ................................................................. 365 内 ................................................................. A.3 366 A.4 ................................................................... 367 A.5 ................................................................... 368 的 A.6 ............................................................ 368 内存的 A.7 ......................................................... 368 调 A.8 ............................................... 369 A.9 将 deprecated . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369 A.10将 used. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370 或 A.11将 unused . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370 进 (pack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.12将 370 的内存对 A.13 ................................................. 371 存 A.14将 ............................................... 372 A.15 ................................................................. 372 式的 A.16 ....................................................... 373 的内存对 A.17 .................................................. 374 的 A.18 .................................................. 375 A.19 ....................................................... 375 A.20 Case ...................................................... 376 的 操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.21void 377 更 更的 性................................... A.22 377 – XIII –
  • 14. 附录 B 参考书目 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380 程 设 的相 B.1 C ............................................. 380 B.2 Linux 程的相 ................................................... 381 B.3 Linux 内 的相 ................................................... 381 B.4 操作 设 的相 ............................................... 382 – XIV –
  • 15. 1 第 1 章 简介和主要概念 的 程的 将 写 件的相 。 件 的 内 进 。 的 件 、 、调 、 工 shell、文 : 即 GNU Core Utilities, 的 工 集 我 ( GNU 们 的 进程 。 程 内 以 ) C 件。 件( 程 ” ” (high-level)GUI 更 的 们 。 程 的时间 写 件 。 理 程 程 。 作 的 更 的 程 我们 写的 件的 。 的 Linux 上的 程的 。 Linux Linus Torvalds 内 散的 写的 操作 。 Unix Linux Unix 同的 理 自 的原 方方 Linux Unix Linux 的 实 能的 。 的 程的 内 Linux 何 的 Unix 的。然 内 Linux 相 的 Unix 自 出的 的新 的 调 Linux 同的 新 性。 1.1 系统编程 的 的 Unix 程 程。 上 的 上进 工作 Unix X Window 时 我们 的 Unix 以 上 API。 Linux 程 设 的。然 程 的 何 – make 的 上 的 程的 API。 Linux 们 程 程相 们 同 同 。 程 出的 程 对 工作的 的 件 操作 的 然 们 调 上的 。 写的 的 上 上 相 的内 。 的 –1–
  • 16. 1 程 程 程 (或 相 件 的 。 ), 离 的 程的 然 的 的方 式的 程 同 。 我们 件( web Javascript ( C# 或 程 离 程 PHP Java 更 的 展。然 展 示 程的 。实 上 写 Javascript C# 程。更进 步 Java 程 然 以 程 同 PHP 理 内 的 能 何 写出更 的 。 程的 展 的 Unix Linux 的程 然 程 内 提 的 。 的 C C 程 Apache、 bash、 cp、 Emacs、 init、 gcc、 gdb、 glibc、 ls、 mv、 vim 时的。 X 程的 内 或 设备 的内 。 程的 将 内 。 将 内 上的内 ( 内 对 空间 程。同 程 以及相 的内 展 。设备 程 程 的 。 我 Linux 上 写 程 内 提 我 何 设 小 相 C Linux Linux 提 的 调 们 何工作的 Unix 将 的 。 程 调 的 C C 。 1.1.1 系统调用 程 调 。 调 ( 写 操作 syscalls 或 空间 文 内 ( 的 的 调 。 调 我们 的 read() 的 get thread area() write() set tid address()。 Linux 实 的 调 操作 。 i386 –2–
  • 17. 1 的 调 相 的 Windows 上 。 300 Linux 的内 ( 实 自的 Alpha i386 PowerPC) 调 。 同 间的 调 存 的 。然 90% 以 上 调 的 上 实 。 上 的 的 内 。 1.1.2 调用系统调用 空间 程 能 内 。 的 空间程 内 的 或 操作内 。相 内 提 空间程 能 内 调 调 。 程 能 内 内 的 。 同的 相同 i386 上 空间程 0x80 的 将 内 int 的 内 处理 的 0x80 的处理 的 调 处理 。 程 存 内 调 。 调 。 上 调 0 i386 5( 空间程 将5 写 存 。 open() int eax 的方式进 处理。 以 i386 存 能的 存 存 。对 ebx、 ecx、 edx、 esi edi 5 的超 的 调 的 存 空间 存 5 的 存 即 。 然 调 的 。 处理 调 的方式 同 的 的。作 程 内 处理 调 的。 内 的 调 的 自 处理。 C 1.1.3 C 库 (libc 程 的 。 的 C Unix C 的 的 提 或 方 的 调 。 的 Linux GNU libc 提 C glibc [gee-lib-see] 或 更 [glib-see]. 提 超 展示的内 。 的C 提 GNU C glibc –3–
  • 18. 1 调 程 工 。 1.1.4 C 编译器 的C 工 集(gcc 。原 Linux GNU gcc 的 cc 。 示 GNU C Compiler。 GNU C GCC 的 进 。时 的 。然 gcc GNU 调 我 gcc 的时 gcc C 上 文 的 程 。 gcc 实 的 ABI( C ( ”C ”) ”APIs 的 程的 ABIs” ) Unix ( Linux ) 。 1.2 API 和 ABI 将 程 们 们写的程 以 提 的 上。 们 们自 的 Linux 上 的程 能 的 Linux 同时 以 的 更新的 Linux 上。 Linux 性的 相 的 集 程 (API 程 进 (ABI 件 同 间的 。 1.2.1 API 件 间 的 。 提 API 以 的方式) 的方式进 程 段( 的 ( : 以调 程 段( 。 上 示文 的 API 能 对 示文 提 的。 我们 的 实 对 API 的实 。 API API 们 理 的 API 上 。 API 的 件) 给 API 的 API ( 实 提 何实 内 能 的 子 或 或 。 API 的 件 同 的 API 时 。 API 的实 上能 。 API –4–
  • 19. 1 实 的 子 实 API C C API 的 处理 。 我们 及 的 API IO。 Linux 程 的 API 将 的 。 1.2.2 ABI 的 的 上 或 API ABI 件 间的 进 。 何 自 何 内 以及 进 。 ABI 进 段 能 何 同 ABI 的 上 作 新 。 的 调 、 、 存 、 调 、 ABI 、 进 式。以调 何 调 何 存 以及调 何提 的 。 同的操作 ( i386 上的 Unix 操作 的 ABI 然 效。相 Linux 内的操作 自 的 ABI 相 。 ABI 的 ABI 及 的 的 存 或 。 Linux 自 的 ABI 集 实上 我们以 的 。 ABI alpha x86-64 程 ABI 的 。 ABI 上的 工 (tooltrain 、 。 ABI 的相 内 以 写出更 的 写 或 工 时的绝 ( 实 程。 我们 以 上 Linux 上 的工 内 实 的 ABI 。 1.3 标准 程 的 程 。 Unix Unix 的 。 性 。 Unix 的世 将 方 。 –5–
  • 20. 1 的 上 们。 Linux Linux 的 POSIX Single Unix Specification(SUS) 内 Unix 操作 上的 C API POSIX SUS 们 效的 的 Unix 程 出 的 API 集。 1.3.1 POSIX 和 SUS 的历史 子工程 (IEEE 的 1980 Unix 的相 工作。自 件 (Free Software Movement 的 ( Richard Stallman POSIX pahz-icks 操作 。 Portable Operating System Interface( 1988 IEEE std 1003.1-1988( 。 1990 POSIX1988 IEEE POSIX IEEE std 1003.1- 。 性的实时 程 1990(POSIX1990 IEEE Std 1003.1b-1993 式 (POSIX 1993 or POSIX.1b) IEEE Std 1003.1c-1995(POSIX 1995 or POSIX.1c) 文。 2001 性 POSIX1990 的 上 单 的 新的 布 IEEE Std 1003.1-2001 (POSIX 2001)。 IEEE Std 1003.1-2004 的 以 2004 新 2004 4 POSIX POSIX.1 。 的 1980 1990 Unix ”Unix ” 处 的将 自 的 Unix 的 ”Unix”。 工业 Unix Open Software Foundation(OSF X/Open -The Open Group。 The Open Group 提 、 。 1990 的时 布 单 Unix The Open Group UNIX (Single UNIX Specification 。相 的 POSIX SUS SUS 的 。 新的 POSIX 。 SUS 的 SUS 布 的 1994 SUSv1 Unix 95. 的 SUS 布 相 的 的 1997 UNIX 98. 新的 SUS,SUSv3 布 的 SUS 2002 Unix 03.SUSv3 。 我将 IEEE Std 1003.1-2001 的 调 提及。我将提及 POSIX POSIX SUS ( 的 超集 SUS POSIX.1 –6–
  • 21. 1 的 扩展 的 POSIX.1 提 的 能 –APUE S2.2.3 。 1.3.2 C 语言标准 Brian Kernighan 的 作 C程 设 Dennis Ritchie (Prentice Hall) 自 1978 出 式的 C 的 。 的C 的 程的 K&R C。 C Basic 。 对 时 相 的 进 (ANSI 方 的C 1983 进 新的 性 同时 的 。 C++ 程 。 1990 ANSI C 1989 (ISO ANSI C 进 ISO C90。 布 新 ( 然 1995 ISO ISO 的 ISO C99 更新 的内 进 新的 C95。 1999 、新 、 、 C++ 新的 。 inline 1.3.3 Linux 和标准 POSIX 以及 SUS 提 Linux SUSv3 POSIX.1 的 的实时(POSIX.1b) 程 (POSIX.1c) 。更 的 提 的 。 满 Linux POSIX SUS 的 即 SUSv3 实 的 bug。 Linux POSIX.1 POSIX 或 方 ( Linux 的 以我 式 SUS 布 Linux POSIX 或 的。 SUS gcc 提 Linux gcc C ISO C99 的扩展 扩展 相 。 C GNU C。 的 的 子 。 Linux C 的 将 的 。 进 以 的 glibc 。 gcc 扩展 对 新的 gcc 布 gcc 将 的 的C C 程 。 的 Linux 内 调 的 调 Linux 内 的 上实 。 同 的 Linux 布 (LSB 。 Linux ( 自 LSB Linux [Free Standard Group]) –7–