pdf

Linux-UNIX System Programming Manual (Volumes 1 and 2)

  • 2022-09-27
  • 29.44MB
  • Points it Requires : 1

  \"Linux/UNIX System Programming Handbook (Volumes 1 and 2)\" is an authoritative book that introduces the programming interface between Linux and UNIX. Michael Kerrisk, a senior Linux programming expert, describes in detail the system calls and library functions involved in Linux/UNIX system programming, supplemented by comprehensive and clear code examples. \"Linux/UNIX System Programming Handbook (Volumes 1 and 2)\" covers more than 500 system calls and library functions, and provides more than 200 program examples, as well as 88 tables and 115 schematic diagrams. \"Linux/UNIX System Programming Handbook (Volumes 1 and 2)\" is divided into 64 chapters, mainly explaining how to read and write files efficiently, the use of signals, clocks and timers, creating processes, executing programs, writing secure applications, using POSIX thread technology to write multi-threaded programs, creating and using shared libraries, using pipes, message queues, shared memory and semaphore technology for inter-process communication, and using socket API to write network applications. \"Linux/UNIX System Programming Handbook (Volumes 1 and 2)\" not only brings together a large number of Linux-specific features (epoll, inotify, /proc), but also deliberately strengthens the discussion of UNIX standards (POSIX, SUS), completely achieving the effect of \"having both fish and bear\'s paw\", which is also the highlight of this book. \"Linux/UNIX System Programming Handbook (Volumes 1 and 2)\" has a reasonable layout, clear discussion, and thorough reasoning. In particular, the author\'s ingenious and original design of the sample code will benefit you a lot from careful reading. This book is suitable for technicians engaged in Linux/UNIX system development and operation and maintenance, and can also be used as a reference study material for computer science students in colleges and universities. Chapter 1 History and Standards 1.1 A Brief History of UNIX and C 1.2 A Brief History of Linux 1.2.1 The GNU Project 1.2.2 The Linux Kernel 1.3 Standardization 1.3.1 The C Programming Language 1.3.2 The First POSIX Standard 1.3.3 X/Open and The Open Group 1.3.4 SUSv3 and POSIX.1-2001 1.3.5 SUSv4 and POSIX.1-2008 1.3.6 UNIX Standards Timeline 1.3.7 Implementation Standards 1.3.8 Linux, Standards, and the Linux Standard Base 1.4 Summary Chapter 2 Basic Concepts 2.1 The Core Kernel of the Operating System 2.2 The Shell 2.3 Users and Groups 2.4 The Single Root Directory Hierarchy, Directories, Links, and Files 2.5 The File I/O Model 2.6 Programs 2.7 Processes 2.8 Memory Mapping 2.9 Static and Shared Libraries 2.10 Interprocess Communication and Synchronization 2.11 3.5 Notes on the Example Programs in This Book 3.5.1 Command-Line Options and Arguments 3.5.2 Commonly Used Functions and Header Files 3.6 Portability Issues 3.6.1 Feature Test Macros 3.6.2 System Data Types 3.6.3 Other Portability Issues 3.7 Summary 3.8 Exercises Chapter 4 File I/O: The General I/O Model 4.1 Overview 4.2 General I/O 4.3 Opening a File: open() 4.3.1 The flags parameter in the open() call 4.3.2 Errors in the open() function 4.3.3 The creat() system call 4.4 Reading the contents of a file: read() 4.5 Writing data to a file: write() 4.6 Closing a file: close() 4.7 Changing the file offset: lseek() 4.8 Operations outside the general I/O model: ioctl() 4.9 Summary 4.10 Exercises Chapter 5 A Deep Dive into File I/O 5.1 Atomic Operations and Race Conditions 5.2 File Control Operations: fcntl() 5.3 Status Flags for Open Files 5.4 The Relationship between File Descriptors and Open Files 5.5 Duplicating File Descriptors 5.6 I/O at a Specific Offset in a File: pread() and pwrite() 5.7 Scatter-Gather I/O: readv() and writev() 5.8 Truncating a File: truncate() and ftruncate() System Calls 5.9 Nonblocking I/O 5.10 Large File I/O 5.11 The /dev/fd Directory5.12 Creating Temporary Files5.13 Summary5.14 ExercisesChapter 6 Processes6.1 Processes and Programs6.2 Process ID and Parent Process ID6.3 Process Memory Layout6.4 Virtual Memory Management6.5 Stacks and Stack Frames6.6 Command Line Arguments (argc, argv) 6.7 The Environment List6.8 Performing Nonlocal Jumps: setjmp() and longjmp() 6.9 Summary6.9 ExercisesChapter 7 Memory Allocation7.1 Allocating Memory on the Heap7.1.1 Adjusting Program Breaks: brk() and sbrk()7.1.2 Allocating Memory on the Heap: malloc() and free()7.1.3 Implementation of malloc() and free()7.1.4 Other Ways to Allocate Memory on the Heap7.2 Allocating Memory on the Stack: alloca()7.3 Summary7.4 ExercisesChapter 8 Users and Groups8.1 8.2 The shadow password file: /etc/shadow 8.3 The group file: /etc/group 8.4 Obtaining user and group information 8.5 Password encryption and user authentication 8.6 Summary 8.7 Exercises Chapter 9 Process Credentials 9.1 Real User ID and Real Group ID 9.2 Effective User ID and Effective Group ID 9.3 Set-User-ID and Set-Group-ID Procedures 9.4 Saved set-user-ID and Saved set-group-ID 9.5 File System User IDs and Group IDs 9.6 Auxiliary Group IDs 9.7 Obtaining and Modifying Process Credentials 9.7.1 Obtaining and Modifying Real, Effective, and Saved Set Flags 9.7.2 Obtaining and Modifying File System IDs 9.7.3 Obtaining and Modifying Auxiliary Group IDs 9.7.4 System Calls to Modify Process Credentials Summary 9.7.5 Example: Displaying Process Credentials 9.8 Summary 9.9 Exercises Chapter 10 Time 10.1 Calendar Time 10.2 Time Conversion Functions 10.2.1 Converting time_t to Printable Format 10.2.2 Converting between time_t and Decomposed Time 10.2.3 Converting Between Decomposed Time and Printable Format 10.3 Time Zones 10.4 Locales 10.5 Updating the System Clock 10.6 Software Clocks (jiffies) 10.7 Process Time 10.8 Summary 10.9 Exercises Chapter 11 System Limits and Options 11.1 System Limits 11.2 Obtaining System Limits (and Options) at Runtime 11.3 Obtaining File-Related Limits (and Options) at Runtime 11.4 Uncertain Limits 11.5 System Options 11.6 Summary 11.7 Exercises Chapter 12 System and Process Information 12.1 The /proc File System 12.1.1 Getting Information About a Process: /proc/PID 12.1.2 System Information in the /proc Directory 12.1.3 Accessing /proc Files 12.2 System Identifiers: uname() 12.3 Summary 12.4 Exercises Chapter 13 File I/O Buffering 13.1 Kernel Buffering of File I/O: The Buffer Cache 13.2 Buffering in the stdio Library 13.3 Controlling Kernel Buffering of File I/O 13.4 Summary of I/O Buffering 13.5 Advising the Kernel on I/O Patterns 13.6 Bypassing the Buffer Cache: Direct I/O 13.7 Mixing Library Functions and System Calls for File I/O 13.8 Summary 13.9 Exercises Chapter 14 System Programming Concepts 14.1 Device Special Files (Device Files) 14.2 Disks and Partitions 14.3 File Systems 14.4 i-Nodes 14.5 Virtual File Systems (VFS) 14.6 Journaling File Systems 14.7 14.8 Mounting and Unmounting File Systems14.8.1 Mounting a File System: mount()14.8.2 Unmounting a File System: umount() and umount2()14.9 Advanced Mount Features14.9.1 Mounting a File System on Multiple Mount Points14.9.2 Mounting the Same Mount Point Multiple Times14.9.3 Mount Flags on a Per-Mount Basis14.9.4 Bind Mounts14.9.5 Recursive Bind Mounts14.10 Virtual Memory File Systems: tmpfs14.11 Getting Information About the File System: statvfs()14.12 Summary14.13 ExercisesChapter 15 File Attributes15.1 Getting File Information: stat()15.2 File Timestamps15.2.1 Changing File Timestamps with utime() and utimes()15.2.2 Changing File Timestamps with utimensat() and futimens()15.3 15.3.1 Owners of Newly Created Files15.3.2 Changing File Owners: chown(), fchown(), and lchown() 15.4 File Permissions15.4.1 Permissions on Regular Files15.4.2 Directory Permissions15.4.3 Permission Checking Algorithms15.4.4 Checking Access Rights to a File: access() 15.4.5 Set-User-ID, Set-Group-ID, and the Sticky Bit15.4.6 The File Mode Creation Mask for a Process: umask() 15.4.7 Changing File Permissions: chmod() and fchmod() 15.5 I-Node Flags (ext2 Extended File Attributes) 15.6 Summary15.7 ExercisesChapter 16 Extended Attributes16.1 Overview16.2 Implementation Details of Extended Attributes16.3 System Calls for Manipulating Extended Attributes16.4 Summary16.5 ExercisesChapter 17 Access Control Lists17.1 Overview17.2 ACL permission checking algorithm17.3 ACL long and short text formats17.4 ACL_mask type ACE and ACL group classification17.5 getfacl and setfacl commands17.6 Default ACL and file creation17.7 ACL implementation limitations17.8 ACL API 17.9 Summary17.10 ExercisesChapter 18 Directories and Links18.1 Directories and (Hard) Links18.2 Symbolic (Soft) Links18.3 Creating and Removing (Hard) Links: link() and unlink() 

unfold

You Might Like

Uploader
sigma
 

Recommended ContentMore

Popular Components

Just Take a LookMore

EEWorld
subscription
account

EEWorld
service
account

Automotive
development
circle

About Us Customer Service Contact Information Datasheet Sitemap LatestNews


Room 1530, 15th Floor, Building B, No.18 Zhongguancun Street, Haidian District, Beijing, Postal Code: 100190 China Telephone: 008610 8235 0740

Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号
×