没有合适的资源?快使用搜索试试~ 我知道了~
首页GNU C Library权威指南(2.19版)
《GNU C Library参考手册》是程序员必备的工具书,特别针对GCC开发者设计,适用于版本2.19。该手册由Sandra Loosemore、Richard M. Stallman、Roland McGrath、Andrew Oram和Ulrich Drepper共同编撰,版权属于Free Software Foundation,自1993年至2014年。它详细介绍了GNU C/C++ Library的各种函数和功能,涵盖了广泛的知识领域。
1. **介绍**:本章首先概述了GNU C Library的核心理念,它是GNU项目的一部分,旨在提供一套高质量、自由和开源的C语言标准库,支持各种操作系统和平台。这部分内容可能包括库的历史背景、设计理念以及与其他类似库的比较。
2. **错误报告**:在手册的第二部分,读者可以找到关于如何在程序中处理和报告错误的信息。这包括错误处理机制、异常处理以及如何编写健壮的代码来处理潜在问题,以确保程序的稳定性和可维护性。
3. **虚拟内存管理和页式存储**:对于理解底层系统资源管理至关重要,这一章节讲解了如何通过GNU C Library进行内存分配和管理,涉及动态内存分配、内存池技术以及与操作系统的页式存储机制的交互,帮助开发者优化内存使用效率。
4. **字符处理**:这是手册的核心内容之一,介绍了字符串处理函数、字符编码转换、输入输出流管理等,是C程序中不可或缺的部分。字符处理涉及到字符数组操作、文本解析、文件I/O等实用功能的实现。
5. **字符串和数组**:这部分内容深入探讨字符串操作,如字符串连接、搜索、分割以及数组管理,这些都是编写高效C代码的基础。此外,还有关于内存管理的内存对齐和缓冲区溢出防范的知识。
6. **数学和数字处理**:涉及浮点数运算、整数操作、随机数生成等,这些函数在科学计算、数值分析以及加密算法等领域有着广泛应用。
7. **网络编程**:如果手册包含这部分内容,将指导开发者如何使用GNU C Library进行网络通信,包括套接字编程、网络协议解析、数据传输和错误检测。
8. **并发编程和线程**:随着多核处理器的普及,理解如何在GNU C Library的框架下实现并行和并发编程,如创建和管理线程,同步机制等,对现代软件开发至关重要。
9. **文件系统操作**:文件I/O、目录操作、路径处理、权限管理等,都是此部分的涵盖范围,对于系统级和应用程序级别的文件操作至关重要。
10. **安全性和隐私保护**:介绍了如何使用GNU C Library中的安全功能,如密码哈希、加密算法,以及如何在程序中实施基本的安全措施。
《GNU C Library Reference Manual》为C/C++开发者提供了一站式的参考资源,无论是在开发基础应用还是高级系统级程序时,都能从中获得宝贵的知识和技能。
xii
19 Mathematics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504
19.1 Predefined Mathematical Constants . . . . . . . . . . . . . . . . . . . . . . . . . 504
19.2 Trigonometric Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505
19.3 Inverse Trigonometric Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507
19.4 Exponentiation and Logarithms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 508
19.5 Hyperbolic Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513
19.6 Special Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515
19.7 Known Maximum Errors in Math Functions . . . . . . . . . . . . . . . . . 518
19.8 Pseudo-Random Numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 542
19.8.1 ISO C Random Number Functions . . . . . . . . . . . . . . . . . . . . . 543
19.8.2 BSD Random Number Functions . . . . . . . . . . . . . . . . . . . . . . . 544
19.8.3 SVID Random Number Function . . . . . . . . . . . . . . . . . . . . . . . 546
19.9 Is Fast Code or Small Code preferred? . . . . . . . . . . . . . . . . . . . . . . 551
20 Arithmetic Functions . . . . . . . . . . . . . . . . . . . . . . . 552
20.1 Integers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 552
20.2 Integer Division . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553
20.3 Floating Point Numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555
20.4 Floating-Point Number Classification Functions . . . . . . . . . . . . . 556
20.5 Errors in Floating-Point Calculations. . . . . . . . . . . . . . . . . . . . . . . . 558
20.5.1 FP Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558
20.5.2 Infinity and NaN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 559
20.5.3 Examining the FPU status word . . . . . . . . . . . . . . . . . . . . . . . 560
20.5.4 Error Reporting by Mathematical Functions . . . . . . . . . . . . 562
20.6 Rounding Modes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 563
20.7 Floating-Point Control Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . 564
20.8 Arithmetic Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 566
20.8.1 Absolute Value. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567
20.8.2 Normalization Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567
20.8.3 Rounding Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569
20.8.4 Remainder Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571
20.8.5 Setting and modifying single bits of FP values . . . . . . . . . . 572
20.8.6 Floating-Point Comparison Functions . . . . . . . . . . . . . . . . . . 573
20.8.7 Miscellaneous FP arithmetic functions. . . . . . . . . . . . . . . . . . 575
20.9 Complex Numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576
20.10 Projections, Conjugates, and Decomposing of Complex Numbers
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576
20.11 Parsing of Numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577
20.11.1 Parsing of Integers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 578
20.11.2 Parsing of Floats. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 582
20.12 Old-fashioned System V number-to-string functions . . . . . . . . 584
xiii
21 Date and Time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 588
21.1 Time Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 588
21.2 Elapsed Time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 588
21.3 Processor And CPU Time. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 590
21.3.1 CPU Time Inquiry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 590
21.3.2 Processor Time Inquiry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 591
21.4 Calendar Time. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 592
21.4.1 Simple Calendar Time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 592
21.4.2 High-Resolution Calendar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593
21.4.3 Broken-down Time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595
21.4.4 High Accuracy Clock. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 598
21.4.5 Formatting Calendar Time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 601
21.4.6 Convert textual time and date information back . . . . . . . . 607
21.4.6.1 Interpret string according to given format . . . . . . . . . 607
21.4.6.2 A More User-friendly Way to Parse Times and Dates
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 612
21.4.7 Specifying the Time Zone with TZ . . . . . . . . . . . . . . . . . . . . . . 615
21.4.8 Functions and Variables for Time Zones . . . . . . . . . . . . . . . . 617
21.4.9 Time Functions Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 618
21.5 Setting an Alarm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 618
21.6 Sleeping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 621
22 Resource Usage And Limitation . . . . . . . . . . . 623
22.1 Resource Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 623
22.2 Limiting Resource Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625
22.3 Process CPU Priority And Scheduling. . . . . . . . . . . . . . . . . . . . . . . 629
22.3.1 Absolute Priority . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 630
22.3.1.1 Using Absolute Priority . . . . . . . . . . . . . . . . . . . . . . . . . . . 630
22.3.2 Realtime Scheduling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 631
22.3.3 Basic Scheduling Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 632
22.3.4 Traditional Scheduling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 635
22.3.4.1 Introduction To Traditional Scheduling . . . . . . . . . . . . 635
22.3.4.2 Functions For Traditional Scheduling . . . . . . . . . . . . . . 637
22.3.5 Limiting execution to certain CPUs . . . . . . . . . . . . . . . . . . . . 638
22.4 Querying memory available resources . . . . . . . . . . . . . . . . . . . . . . . . 641
22.4.1 Overview about traditional Unix memory handling . . . . . 641
22.4.2 How to get information about the memory subsystem? . . 641
22.5 Learn about the processors available . . . . . . . . . . . . . . . . . . . . . . . . 643
23 Non-Local Exits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 645
23.1 Introduction to Non-Local Exits . . . . . . . . . . . . . . . . . . . . . . . . . . . . 645
23.2 Details of Non-Local Exits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 646
23.3 Non-Local Exits and Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 647
23.4 Complete Context Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 648
xiv
24 Signal Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 654
24.1 Basic Concepts of Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 654
24.1.1 Some Kinds of Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 654
24.1.2 Concepts of Signal Generation . . . . . . . . . . . . . . . . . . . . . . . . . 654
24.1.3 How Signals Are Delivered . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655
24.2 Standard Signals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 656
24.2.1 Program Error Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 656
24.2.2 Termination Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 659
24.2.3 Alarm Signals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 660
24.2.4 Asynchronous I/O Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 660
24.2.5 Job Control Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 661
24.2.6 Operation Error Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 662
24.2.7 Miscellaneous Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663
24.2.8 Signal Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664
24.3 Specifying Signal Actions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664
24.3.1 Basic Signal Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 665
24.3.2 Advanced Signal Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 667
24.3.3 Interaction of signal and sigaction . . . . . . . . . . . . . . . . . . . 668
24.3.4 sigaction Function Example . . . . . . . . . . . . . . . . . . . . . . . . . . 668
24.3.5 Flags for sigaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 669
24.3.6 Initial Signal Actions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 670
24.4 Defining Signal Handlers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 671
24.4.1 Signal Handlers that Return . . . . . . . . . . . . . . . . . . . . . . . . . . . 671
24.4.2 Handlers That Terminate the Process . . . . . . . . . . . . . . . . . . 672
24.4.3 Nonlocal Control Transfer in Handlers . . . . . . . . . . . . . . . . . . 673
24.4.4 Signals Arriving While a Handler Runs . . . . . . . . . . . . . . . . . 674
24.4.5 Signals Close Together Merge into One . . . . . . . . . . . . . . . . . 674
24.4.6 Signal Handling and Nonreentrant Functions . . . . . . . . . . . 677
24.4.7 Atomic Data Access and Signal Handling . . . . . . . . . . . . . . . 678
24.4.7.1 Problems with Non-Atomic Access . . . . . . . . . . . . . . . . 679
24.4.7.2 Atomic Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 679
24.4.7.3 Atomic Usage Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . 680
24.5 Primitives Interrupted by Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . 680
24.6 Generating Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 681
24.6.1 Signaling Yourself . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 681
24.6.2 Signaling Another Process. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 682
24.6.3 Permission for using kill . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 684
24.6.4 Using kill for Communication . . . . . . . . . . . . . . . . . . . . . . . . . 684
24.7 Blocking Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 685
24.7.1 Why Blocking Signals is Useful . . . . . . . . . . . . . . . . . . . . . . . . . 686
24.7.2 Signal Sets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 686
24.7.3 Process Signal Mask . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 687
24.7.4 Blocking to Test for Delivery of a Signal . . . . . . . . . . . . . . . . 688
24.7.5 Blocking Signals for a Handler . . . . . . . . . . . . . . . . . . . . . . . . . 689
24.7.6 Checking for Pending Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . 690
24.7.7 Remembering a Signal to Act On Later . . . . . . . . . . . . . . . . 691
24.8 Waiting for a Signal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 692
24.8.1 Using pause . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 692
xv
24.8.2 Problems with pause. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 693
24.8.3 Using sigsuspend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 693
24.9 Using a Separate Signal Stack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 694
24.10 BSD Signal Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 696
24.10.1 BSD Function to Establish a Handler . . . . . . . . . . . . . . . . . 697
24.10.2 BSD Functions for Blocking Signals . . . . . . . . . . . . . . . . . . . 698
25 The Basic Program/System Interface . . . . . 699
25.1 Program Arguments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 699
25.1.1 Program Argument Syntax Conventions . . . . . . . . . . . . . . . . 700
25.1.2 Parsing Program Arguments . . . . . . . . . . . . . . . . . . . . . . . . . . . 700
25.2 Parsing program options using getopt . . . . . . . . . . . . . . . . . . . . . . 701
25.2.1 Using the getopt function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 701
25.2.2 Example of Parsing Arguments with getopt . . . . . . . . . . . . 702
25.2.3 Parsing Long Options with getopt_long . . . . . . . . . . . . . . . 704
25.2.4 Example of Parsing Long Options with getopt_long . . . 706
25.3 Parsing Program Options with Argp . . . . . . . . . . . . . . . . . . . . . . . . 708
25.3.1 The argp_parse Function. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 708
25.3.2 Argp Global Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 709
25.3.3 Specifying Argp Parsers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 709
25.3.4 Specifying Options in an Argp Parser . . . . . . . . . . . . . . . . . . 710
25.3.4.1 Flags for Argp Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . 711
25.3.5 Argp Parser Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 712
25.3.5.1 Special Keys for Argp Parser Functions . . . . . . . . . . . . 713
25.3.5.2 Argp Parsing State . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 715
25.3.5.3 Functions For Use in Argp Parsers. . . . . . . . . . . . . . . . . 716
25.3.6 Combining Multiple Argp Parsers . . . . . . . . . . . . . . . . . . . . . . 718
25.3.7 Flags for argp_parse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 718
25.3.8 Customizing Argp Help Output . . . . . . . . . . . . . . . . . . . . . . . . 719
25.3.8.1 Special Keys for Argp Help Filter Functions . . . . . . . 719
25.3.9 The argp_help Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 720
25.3.10 Flags for the argp_help Function . . . . . . . . . . . . . . . . . . . . . 720
25.3.11 Argp Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 721
25.3.11.1 A Minimal Program Using Argp. . . . . . . . . . . . . . . . . . 721
25.3.11.2 A Program Using Argp with Only Default Options
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 722
25.3.11.3 A Program Using Argp with User Options. . . . . . . . 723
25.3.11.4 A Program Using Multiple Combined Argp Parsers
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 726
25.3.12 Argp User Customization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 729
25.3.12.1 Parsing of Suboptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 730
25.3.13 Parsing of Suboptions Example . . . . . . . . . . . . . . . . . . . . . . . 730
25.4 Environment Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 732
25.4.1 Environment Access. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 732
25.4.2 Standard Environment Variables . . . . . . . . . . . . . . . . . . . . . . . 735
25.5 Auxiliary Vector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 736
25.5.1 Definition of getauxval . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 737
25.6 System Calls. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 737
xvi
25.7 Program Termination . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 738
25.7.1 Normal Termination . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 739
25.7.2 Exit Status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 739
25.7.3 Cleanups on Exit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 740
25.7.4 Aborting a Program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 741
25.7.5 Termination Internals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 741
26 Processes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 743
26.1 Running a Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 743
26.2 Process Creation Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 744
26.3 Process Identification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 744
26.4 Creating a Process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 745
26.5 Executing a File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 746
26.6 Process Completion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 749
26.7 Process Completion Status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 751
26.8 BSD Process Wait Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 752
26.9 Process Creation Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 753
27 Job Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 755
27.1 Concepts of Job Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 755
27.2 Job Control is Optional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 756
27.3 Controlling Terminal of a Process . . . . . . . . . . . . . . . . . . . . . . . . . . . 756
27.4 Access to the Controlling Terminal . . . . . . . . . . . . . . . . . . . . . . . . . . 756
27.5 Orphaned Process Groups. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 757
27.6 Implementing a Job Control Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . 757
27.6.1 Data Structures for the Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . 758
27.6.2 Initializing the Shell. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 759
27.6.3 Launching Jobs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 760
27.6.4 Foreground and Background . . . . . . . . . . . . . . . . . . . . . . . . . . . 764
27.6.5 Stopped and Terminated Jobs . . . . . . . . . . . . . . . . . . . . . . . . . . 765
27.6.6 Continuing Stopped Jobs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 768
27.6.7 The Missing Pieces. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 769
27.7 Functions for Job Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 770
27.7.1 Identifying the Controlling Terminal. . . . . . . . . . . . . . . . . . . . 770
27.7.2 Process Group Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 770
27.7.3 Functions for Controlling Terminal Access . . . . . . . . . . . . . . 772
28 System Databases and Name Service Switch
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 774
28.1 NSS Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 774
28.2 The NSS Configuration File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 775
28.2.1 Services in the NSS configuration File . . . . . . . . . . . . . . . . . . 775
28.2.2 Actions in the NSS configuration . . . . . . . . . . . . . . . . . . . . . . . 776
28.2.3 Notes on the NSS Configuration File . . . . . . . . . . . . . . . . . . . 777
28.3 NSS Module Internals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 777
28.3.1 The Naming Scheme of the NSS Modules . . . . . . . . . . . . . . . 777
28.3.2 The Interface of the Function in NSS Modules . . . . . . . . . . 778
剩余1087页未读,继续阅读
synweb
- 粉丝: 2
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功