Submit Search
Upload
LSP Cn Alpha(Revision 77)
•
5 likes
•
1,952 views
Stanley Ho
Follow
Linux System Program
Read less
Read more
Report
Share
Report
Share
1 of 396
Download now
Download to read offline
Recommended
Βιβλίο Κοινωνιολογίας Γ' Λυκείου
Βιβλίο Κοινωνιολογίας Γ' Λυκείου
Georgia Kazakou
Βιβλιο καθηγητή για την Κοινωνιολογία Γ΄Λυκείου
Βιβλιο καθηγητή για την Κοινωνιολογία Γ΄Λυκείου
Georgia Kazakou
Monograph influvac(1)
Monograph influvac(1)
Elena Sharabura
Laptrinh Java
Laptrinh Java
guest9d60a5
Τετράδιο εργασιών Κοινωνιολογίας Γ΄Λυκείου
Τετράδιο εργασιών Κοινωνιολογίας Γ΄Λυκείου
Georgia Kazakou
Фізика 7 клас, Бойко, Венгер, Мельничук, 2015
Фізика 7 клас, Бойко, Венгер, Мельничук, 2015
podedvorniy
10 f z_u
10 f z_u
UA1011
7 физ бойко_венгер_2014_укр
7 физ бойко_венгер_2014_укр
Aira_Roo
Recommended
Βιβλίο Κοινωνιολογίας Γ' Λυκείου
Βιβλίο Κοινωνιολογίας Γ' Λυκείου
Georgia Kazakou
Βιβλιο καθηγητή για την Κοινωνιολογία Γ΄Λυκείου
Βιβλιο καθηγητή για την Κοινωνιολογία Γ΄Λυκείου
Georgia Kazakou
Monograph influvac(1)
Monograph influvac(1)
Elena Sharabura
Laptrinh Java
Laptrinh Java
guest9d60a5
Τετράδιο εργασιών Κοινωνιολογίας Γ΄Λυκείου
Τετράδιο εργασιών Κοινωνιολογίας Γ΄Λυκείου
Georgia Kazakou
Фізика 7 клас, Бойко, Венгер, Мельничук, 2015
Фізика 7 клас, Бойко, Венгер, Мельничук, 2015
podedvorniy
10 f z_u
10 f z_u
UA1011
7 физ бойко_венгер_2014_укр
7 физ бойко_венгер_2014_укр
Aira_Roo
Fizika 7 boyko
Fizika 7 boyko
Дмитрий Блейбер
Canon Eos 3000 N Rus
Canon Eos 3000 N Rus
guest315b36d
10 f z_u
10 f z_u
4book
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 中文实用手册
guest630ab00
ແບບຮຽນ ສືກສາພົນລະເມືອງ ມ7
ແບບຮຽນ ສືກສາພົນລະເມືອງ ມ7
bounnao pathoumma
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À...
nataliej4
Robert Sokolowski εισαγωγή στη φαινομενολογία
Robert Sokolowski εισαγωγή στη φαινομενολογία
Loanna Empiridou
O9i Mv[1]
O9i Mv[1]
lymzic
ປື້ມຄຸູ່ມືຄູ ວິຊາ ເຄມີສາດ ມ7
ປື້ມຄຸູ່ມືຄູ ວິຊາ ເຄມີສາດ ມ7
bounnao pathoumma
Zahirgaanii geree
Zahirgaanii geree
Nara Bn
ປື້ມຄຸູ່ມືຄູ ວິຊາ ຊີວະວິທະຍາ ມ7
ປື້ມຄຸູ່ມືຄູ ວິຊາ ຊີວະວິທະຍາ ມ7
bounnao pathoumma
《Axure快速原型设计》
《Axure快速原型设计》
Ryan Xie
74.1. дбн в.2.3 4 2015. автомобільні дороги.
74.1. дбн в.2.3 4 2015. автомобільні дороги.
ssuser6b7473
A Mercy To The Universe
A Mercy To The Universe
Caller To Islam / الداعية الإسلامي
Реформа публічної адміністрації в Україні: Проекти концепції та законів
Реформа публічної адміністрації в Україні: Проекти концепції та законів
Centre of Policy and Legal Reform
How to write shared libraries!
How to write shared libraries!
Stanley Ho
Modern c
Modern c
Stanley Ho
Riffmci
Riffmci
Stanley Ho
用Raspberry PI學Linux驅動程式
用Raspberry PI學Linux驅動程式
Stanley Ho
More Related Content
What's hot
Fizika 7 boyko
Fizika 7 boyko
Дмитрий Блейбер
Canon Eos 3000 N Rus
Canon Eos 3000 N Rus
guest315b36d
10 f z_u
10 f z_u
4book
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 中文实用手册
guest630ab00
ແບບຮຽນ ສືກສາພົນລະເມືອງ ມ7
ແບບຮຽນ ສືກສາພົນລະເມືອງ ມ7
bounnao pathoumma
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À...
nataliej4
Robert Sokolowski εισαγωγή στη φαινομενολογία
Robert Sokolowski εισαγωγή στη φαινομενολογία
Loanna Empiridou
O9i Mv[1]
O9i Mv[1]
lymzic
ປື້ມຄຸູ່ມືຄູ ວິຊາ ເຄມີສາດ ມ7
ປື້ມຄຸູ່ມືຄູ ວິຊາ ເຄມີສາດ ມ7
bounnao pathoumma
Zahirgaanii geree
Zahirgaanii geree
Nara Bn
ປື້ມຄຸູ່ມືຄູ ວິຊາ ຊີວະວິທະຍາ ມ7
ປື້ມຄຸູ່ມືຄູ ວິຊາ ຊີວະວິທະຍາ ມ7
bounnao pathoumma
《Axure快速原型设计》
《Axure快速原型设计》
Ryan Xie
74.1. дбн в.2.3 4 2015. автомобільні дороги.
74.1. дбн в.2.3 4 2015. автомобільні дороги.
ssuser6b7473
A Mercy To The Universe
A Mercy To The Universe
Caller To Islam / الداعية الإسلامي
Реформа публічної адміністрації в Україні: Проекти концепції та законів
Реформа публічної адміністрації в Україні: Проекти концепції та законів
Centre of Policy and Legal Reform
What's hot
(18)
Fizika 7 boyko
Fizika 7 boyko
Canon Eos 3000 N Rus
Canon Eos 3000 N Rus
10 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 Руководство по экс...
аутсорсинг
аутсорсинг
Dir 605 A1 中文实用手册
Dir 605 A1 中文实用手册
ແບບຮຽນ ສືກສາພົນລະເມືອງ ມ7
ແບບຮຽນ ສືກສາພົນລະເມືອງ ມ7
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À...
Robert Sokolowski εισαγωγή στη φαινομενολογία
Robert Sokolowski εισαγωγή στη φαινομενολογία
O9i Mv[1]
O9i Mv[1]
ປື້ມຄຸູ່ມືຄູ ວິຊາ ເຄມີສາດ ມ7
ປື້ມຄຸູ່ມືຄູ ວິຊາ ເຄມີສາດ ມ7
Zahirgaanii geree
Zahirgaanii geree
ປື້ມຄຸູ່ມືຄູ ວິຊາ ຊີວະວິທະຍາ ມ7
ປື້ມຄຸູ່ມືຄູ ວິຊາ ຊີວະວິທະຍາ ມ7
《Axure快速原型设计》
《Axure快速原型设计》
74.1. дбн в.2.3 4 2015. автомобільні дороги.
74.1. дбн в.2.3 4 2015. автомобільні дороги.
A Mercy To The Universe
A Mercy To The Universe
Реформа публічної адміністрації в Україні: Проекти концепції та законів
Реформа публічної адміністрації в Україні: Проекти концепції та законів
More from Stanley Ho
How to write shared libraries!
How to write shared libraries!
Stanley Ho
Modern c
Modern c
Stanley Ho
Riffmci
Riffmci
Stanley Ho
用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.2
Stanley Ho
看日記學Git
看日記學Git
Stanley Ho
2006 CIC 電子報
2006 CIC 電子報
Stanley Ho
Linux kernel 2.6 document
Linux kernel 2.6 document
Stanley Ho
Bluespec Tutorial Helloworld
Bluespec Tutorial Helloworld
Stanley Ho
E Book Mems
E Book Mems
Stanley Ho
ACPI In Linux CN
ACPI In Linux CN
Stanley Ho
Interrupt In Linux 1.1
Interrupt In Linux 1.1
Stanley Ho
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 Discussion
Stanley Ho
2002 5 1 Introduction To Amba Bus System
2002 5 1 Introduction To Amba Bus System
Stanley Ho
More from Stanley Ho
(15)
How to write shared libraries!
How to write shared libraries!
Modern c
Modern c
Riffmci
Riffmci
用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.2
看日記學Git
看日記學Git
2006 CIC 電子報
2006 CIC 電子報
Linux kernel 2.6 document
Linux kernel 2.6 document
Bluespec Tutorial Helloworld
Bluespec Tutorial Helloworld
E Book Mems
E Book Mems
ACPI In Linux CN
ACPI In Linux CN
Interrupt 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 Discussion
USB Discussion
2002 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–
Download now