图书介绍

Linux应用程序开发 第2版 英文版2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载

Linux应用程序开发 第2版 英文版
  • (美)约翰逊(Johnson,M.K.),(美)特罗安(Troan,E.W.)著 著
  • 出版社: 北京:人民邮电出版社
  • ISBN:7115149410
  • 出版时间:2006
  • 标注页数:702页
  • 文件大小:100MB
  • 文件页数:726页
  • 主题词:Linux操作系统-程序设计-英文

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

Linux应用程序开发 第2版 英文版PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

Part 1 Getting Started1

Chapter 1 History of Linux Development3

1.1 A Short History of Free Unix Software4

1.2 Development of Linux6

1.3 Notional Lineage of Unix Systems7

1.4 Linux Lineage9

Chapter 2 Licenses and Copyright11

2.1 Copyright11

2.2 Licensing13

2.3 Free Software Licenses14

2.3.1 The GNU General Public License15

2.3.2 The GNU Library General Public License15

2.3.3 MIT/X/BSD-Style Licenses16

2.3.4 Old BSD-Style Licensses16

2.3.5 Artistic License16

2.3.6 License Incompatibilities17

Chapter 3 Online System Documentation19

3.1 The man Pages19

3.2 The Info Pages20

3.3 Other Documentation21

Part 2 Development Tools and Environment23

Chapter 4 Development Tools25

4.1 Editors26

4.1.1 Emacs27

4.1.2 vi28

4.2 Make29

4.2.1 Complex Command Lines32

4.2.2 Variables33

4.2.3 Suffix Rules34

4.3 The GNU Debugger35

4.4 Tracing Program Actions40

Chapter 5 gcc Options and Extensions43

5.1 gcc Options44

5.2 Header Files47

5.2.1 long long47

5.2.2 Inline Functions47

5.2.3 Alternative Extended Keywords47

5.2.4 Attributes48

Chapter 6 The GNU C Library49

6.1 Feature Selection49

6.2 POSIX Interfaces52

6.2.1 POSIX Required Types52

6.2.2 Discovering Run-Time Capabilities54

6.2.3 Finding and Setting Basic System Information55

6.3 Compatibility57

Chapter 7 Memory Debugging Tools59

7.1 Buggy Code59

7.2 Memory-Checking Tools Included in glibc62

7.2.1 Finding Memory Heap Corruption62

7.2.2 Using mtrace()to Track Allocations65

7.3 Finding Memory Leaks with mpr66

7.4 Investigating Memory Errors with Valgrind69

7.5 Electric Fence74

7.5.1 Using Electric Fence75

7.5.2 Memory Alignment76

7.5.3 Other Features77

7.5.4 Limitations78

7.5.5 Resource Consumption78

Chapter 8 Creating and Using Libraries79

8.1 Static Libraries79

8.2 Shared Libraries80

8.3 Designing Shared Libraries81

8.3.1 Managing Compatibility82

8.3.2 Incompatible Libraries83

8.3.3 Designing Compatible Libraries83

8.4 Building Shared Libraries84

8.5 Installing Shared Libraries85

8.5.1 Example86

8.6 Using Shared Libraries88

8.6.1 Using Noninstalled Libraries88

8.6.2 Preloading Libraries89

Chapter 9 Linux System Environment91

9.1 The Process Environment91

9.2 Understanding System Calls92

9.2.1 System Call Limitations93

9.2.2 System Call Return Codes94

9.2.3 Using System Calls96

9.2.4 Common Error Return Codes97

9.3 Finding Header and Library Files102

Part 3 System Programming103

Chapter 10 The Process Model105

10.1 Defining a Process105

10.1.1 Complicating Things with Threads106

10.1.2 The Linux Approach106

10.2 Process Attributes107

10.2.1 The pid and Parentage107

10.2.2 Credentials108

10.2.3 The filesystem uid113

10.2.4 User and Group ID Summary113

10.3 Process Information115

10.3.1 Program Arguments115

10.3.2 Resource Usage118

10.3.3 Establishing Usage Limits120

10.4 Process Primitives121

10.4.1 Having Children122

10.4.2 Watching Your Children Die123

10.4.3 Running New Programs125

10.4.4 Faster Process Creation with vfork()127

10.4.5 Killing Yourself128

10.4.6 Killing Others129

10.4.7 Dumping Core130

10.5 Simple Children131

10.5.1 Running and Waiting with sy stem()131

10.5.2 Reading or Writing from a Process132

10.6 Sessions and Process Groups134

10.6.1 Sessions135

10.6.2 Controlling Terminal136

10.6.3 Process Groups136

10.6.4 Orphaned Process Groups138

10.7 Introduction to ladsh139

10.7.1 Running External Programs with ladsh140

10.8 Creating Clones153

Chapter 11 Simple File Handling155

11.1 The File Mode158

11.1.1 File Access Permissions159

11.1.2 File Permission Modifiers161

11.1.3 File Types162

11.1.4 The Process's umask163

11.2 Basic File Operations165

11.2.1 File Descriptors165

11.2.2 Closing Files166

11.2.3 Opening Filesin the FileSystem166

11.2.4 Reading,Writing,and Moving Around168

11.2.5 Partial Reads and Writes173

11.2.6 Shortening Files175

11.2.7 Synchronizing Files175

11.2.8 Other Operations176

11.3 Querying and Changing Inode Information177

11.3.1 Finding Inode Information177

11.3.2 A Simple Example of stat()178

11.3.3 Easily Determining Access Rights181

11.3.4 Changing a File's Access Permissions182

11.3.5 Changing a File's Owner and Group182

11.3.6 Changing a File's Timestamps183

11.3.7 Ext3 Extended Attributes184

11.4 Manipulating Directory Entries188

11.4.1 Creating Device and Named Pipe Entries189

11.4.2 Creating Hard Links191

11.4.3 Using Symbolic Links192

11.4.4 Removing Files194

11.4.5 Renaming Files194

11.5 Manipulating File Descriptors195

11.5.1 Changing the Access Mode for an Open File195

11.5.2 Modifiying the close-on-exec Flag196

11.5.3 Duplicating File Descriptors196

11.6 Creating Unnamed Pipes198

11.7 Adding Redirection to ladsh198

11.7.1 The Data Structures199

11.7.2 Changing the Code200

Chapter 12 Signal Processing203

12.1 Signal Concepts204

12.1.1 Life Cycle of a Signal204

12.1.2 Simple Signals205

12.1.3 Reliable Signals207

12.1.4 Signals and System Calls208

12.2 The Linux(and POSIX)Signal API209

12.2.1 Sending Signals209

12.2.2 Using sigset_t210

12.2.3 Catching Signals211

12.2.4 Manipulating a Process's Signal Mask213

12.2.5 Finding the Set of Pending Signals215

12.2.6 Waiting for Signals216

12.3 Available Signals217

12.3.1 Describing Signals221

12.4 Writing Signal Handlers222

12.5 Reopening Log Files224

12.6 Real-Time Signals227

12.6.1 Signal Queueing and Ordering228

12.7 Learning About a Signal231

12.7.1 Getting a Signal's Context231

12.7.2 Sending Data with a Signal237

Chapter 13 Advanced File Handling241

13.1 Input and Output Multiplexing241

13.1.1 Nonblocking I/O244

13.1.2 Multiplexing with poll()245

13.1.3 Multiplexing with select()249

13.1.4 Comparing poll()and select()253

13.1.5 Multiplexing with epoll256

13.1.6 Comparing poll()and epoll263

13.2 Memory Mapping266

13.2.1 Page Alignment267

13.2.2 Establishing Memory Mappings268

13.2.3 Unmapping Regions273

13.2.4 Syncing Memory Regions to Disk274

13.2.5 Locking Memory Regions275

13.3 File Locking276

13.3.1 Lock Files276

13.3.2 Record Locking279

13.3.3 Mandatory Locks285

13.3.4 Leasing a File285

13.4 Alternatives to read()and write()289

13.4.1 Scatter/Gather Reads and Writes290

13.4.2 Ignoring the File Pointer291

Chapter 14 Directory Operations293

14.1 The Current Working Directory293

14.1.1 Finding the Current Working Directory293

14.1.2 The.and..Special Files295

14.1.3 Changing the Current Directory295

14.2 Changing the Root Directory296

14.3 Creating and Removing Directories297

14.3.1 Creating New Directories297

14.3.2 Removing Directories297

14.4 Reading a Directory's Contents297

14.4.1 Starting Over299

14.5 File Name Globbing300

14.5.1 Use a Subprocess300

14.5.2 Internal Globbing301

14.6 Adding Directories and Globbing to ladsh306

14.6.1 Adding cd and pwd306

14.6.2 Adding File Name Globbing307

14.7 Walking File System Trees311

14.7.1 Using ftw()311

14.7.2 File Tree Walks with nftw()313

14.7.3 Implementing find315

14.8 Directory Change Notification317

Chapter 15 Job Control325

15.1 Job Control Basics325

15.1.1 Restarting Processes325

15.1.2 Stopping Processes326

15.1.3 Handling Job Control Signals327

15.2 Job Control in ladsh328

Chapter 16 Terminals and Pseudo Terminals335

16.1 tty Operations336

16.1.1 Terminal Utility Functions337

16.1.2 Controlling Terminals338

16.1.3 Terminal Ownership339

16.1.4 Recording with utempter340

16.1.5 Recording by Hand341

16.2 termios Overview351

16.3 termios Examples353

16.3.1 Passwords353

16.3.2 Serial Communications355

16.4 termios Debugging370

16.5 termios Reference371

16.5.1 Functions372

16.5.2 Window Sizes376

16.5.3 Flags377

16.5.4 Input Flags378

16.5.5 Output Flags380

16.5.6 Control Flags381

16.5.7 Control Characters383

16.5.8 Local Flags385

16.5.9 Controlling read()387

16.6 Pseudo ttys389

16.6.1 Opening Pseudo ttys389

16.6.2 Opening Pseudo ttys the Easy Ways391

16.6.3 Opening Pseudo ttys the Hard Ways392

16.6.4 Pseudo tty Examples396

Chapter 17 Networking with Sockets407

17.1 Protocol Support407

17.1.1 Nice Networking408

17.1.2 Real Networking408

17.1.3 Making Reality Play Nice409

17.1.4 Addresses410

17.2 Utility Functions411

17.3 Basic Socket Operations412

17.3.1 Creating a Socket412

17.3.2 Establishing Connections414

17.3.3 Binding an Address to a Socket414

17.3.4 Waiting for Connections415

17.3.5 Connecting to a Server416

17.3.6 Finding Connection Addresses417

17.4 Unix Domain Sockets418

17.4.1 Unix Domain Addresses418

17.4.2 Waiting for a Connection419

17.4.3 Connecting to a Server422

17.4.4 Running the Unix Domain Examples423

17.4.5 Unnamed Unix Domain Sockets423

17.4.6 Passing File Descriptors424

17.5 Networking Machines with TCP/IP429

17.5.1 Byte Ordering430

17.5.2 IPv4 Addressing431

17.5.3 IPv6 Addressing433

17.5.4 Manipulating IP Addresses435

17.5.5 Turning Names into Addresses437

17.5.6 Turning Addresses into Names449

17.5.7 Listening for TCP Connections455

17.5.8 TCP Client Applications457

17.6 Using UDP Datagrams459

17.6.1 Creating a UDP Socket460

17.6.2 Sending and Receiving Datagrams461

17.6.3 A Simple tftp Server463

17.7 Socket Errors469

17.8 Legacy Networking Functions471

17.8.1 IPv4 Address Manipulation471

17.8.2 Hostname Resolution473

17.8.3 Legacy Host Information Lookup Example475

17.8.4 Looking Up Port Numbers476

Chapter 18 Time481

18.1 Telling Time and Dates481

18.1.1 Representing Time481

18.1.2 Converting,Formatting,and Parsing Times484

18.1.3 The Limits of Time489

18.2 Using Timers490

18.2.1 Sleeping491

18.2.2 Interval Timers492

Chapter 19 Random Numbers497

19.1 Pseudo-Random Numbers497

19.2 Cryptography and Random Numbers498

Chapter 20 Programming Virtual Consoles501

20.1 Getting Started502

20.2 Beeping505

20.3 Determining Whetherthe Terminal Is a VC506

20.4 Finding the Current VC506

20.5 Managing VC Switching507

20.6 Example:The open Command510

Chapter 21 The Linux Console513

21.1 Capability Databases514

21.2 Glyphs,Characters,and Maps516

21.3 Linux Console Capabilities516

21.3.1 Control Characters518

21.3.2 Escape Sequences519

21.3.3 Testing Sequences521

21.3.4 Complex Escape Sequences521

21.4 Direct Screen Writing526

Chapter 22 Writing Secure Programs531

22.1 When Security Matters531

22.1.1 When Security Fails533

22.2 Minimizing the Opportunity for Attack534

22.2.1 Giving Up Permissions534

22.2.2 Getting a Helping Hand535

22.2.3 Restricting File System Access536

22.3 Common Security Holes537

22.3.1 Buffer Overflows537

22.3.2 Parsing Filenames543

22.3.3 Environment Variables544

22.3.4 Running the Shell545

22.3.5 Creating Temporary Files545

22.3.6 Race Conditions and Signal Handlers548

22.3.7 Closing File Descriptors549

22.4 Running as a Daemon550

Part 4 Development Libraries553

Chapter 23 String Matching555

23.1 Globbing Arbitrary Strings555

23.2 Regular Expressions556

23.2.1 Linux Regular Expressions557

23.2.2 Regular Expression Matching557

23.2.3 A Simple grep562

Chapter 24 Terminal Handling with S-Lang569

24.1 Input Handling570

24.1.1 Initializing S-Lang Input Handling571

24.1.2 Restoring the Terminal State572

24.1.3 Reading Characters from the Terminal572

24.1.4 Checking for Pending Input573

24.2 Output Handling573

24.2.1 Initializing Screen Management574

24.2.2 Updating the Display574

24.2.3 Moving the Cursor575

24.2.4 Finishing Screen Management575

24.2.5 Skeleton Screen Management575

24.2.6 Switching Character Sets576

24.2.7 Writing to the Screen577

24.2.8 Drawing Lines and Boxes579

24.2.9 Using Color581

Chapter 25 A Hashed Database Library583

25.1 Overview584

25.2 Basic Operations585

25.2.1 Opening a qdbm File585

25.2.2 Closing a Database586

25.2.3 Obtaining the File Descriptor587

25.2.4 Syncing the Database587

25.3 Reading Records587

25.3.1 Reading a Particular Record587

25.3.2 Reading Records Sequentially589

25.4 Modifying the Database589

25.4.1 Adding Records590

25.4.2 Removing Records590

25.5 Example591

Chapter 26 Parsing Command-Line Options597

26.1 The Option Table598

26.1.1 Defining the Options598

26.1.2 Nesting Option Tables601

26.2 Using the Option Table602

26.2.1 Creating a Context602

26.2.2 Parsing the Command Line604

26.2.3 Leftover Arguments605

26.2.4 Automatic Help Messages606

26.3 Using Callbacks608

26.4 Error Handling612

26.5 Option Aliasing614

26.5.1 Specifying Aliases615

26.5.2 Enabling Aliases615

26.6 Parsing Argument Strings616

26.7 Handling Extra Arguments617

26.8 Sample Application617

Chapter 27 Dynamic Loading at Run Time619

27.1 The dl Interface620

27.1.1 Example624

Chapter 28 User Identification and Authentication627

28.1 ID-to-Name Translation627

28.1.1 Example:The id Command630

28.2 Pluggable Authentication Modules635

28.2.1 PAM Conversations636

28.2.2 PAM Actions638

Appendices647

Appendix A Header Files649

Appendix B ladsh Source Code651

Glossary671

Bibliography679

Index683

热门推荐