SlideShare une entreprise Scribd logo
1  sur  804
Télécharger pour lire hors ligne
Table of Contents
Beginning Linux Programming, Second Edition.............................................................................................1
Foreword..............................................................................................................................................................5
Introduction.........................................................................................................................................................6
Welcome.................................................................................................................................................6
Who's this Book For?..............................................................................................................................6
What's Covered in the Book...................................................................................................................6
What You Need to Use this Book...........................................................................................................8
Source Code............................................................................................................................................9
Conventions............................................................................................................................................9
Tell Us What You Think.......................................................................................................................10
Why Should I Return the Reply Card?.................................................................................................10
Chapter 1: Getting Started.............................................................................................................................11
Overview...............................................................................................................................................11
What is UNIX?.....................................................................................................................................11
What is Linux?......................................................................................................................................11
Distributions..........................................................................................................................................11
The GNU Project and the Free Software Foundation...........................................................................12
Programming Linux..............................................................................................................................13
UNIX Programs....................................................................................................................................13
The C Compiler..............................................................................................................................14
Try It Out − Our First UNIX C Program........................................................................................14
How It Works..................................................................................................................................15
Getting Help..........................................................................................................................................15
Try It Out − Manual Pages and info................................................................................................16
Development System Roadmap............................................................................................................17
Programs.........................................................................................................................................17
Header Files....................................................................................................................................18
Library Files...................................................................................................................................19
Static Libraries...............................................................................................................................19
Try It Out − Static Libraries............................................................................................................20
Shared Libraries.............................................................................................................................22
UNIX Philosophy.................................................................................................................................23
Simplicity.......................................................................................................................................23
Focus..............................................................................................................................................23
Reusable Components....................................................................................................................23
Filters..............................................................................................................................................23
Open File Formats..........................................................................................................................23
Flexibility.......................................................................................................................................23
Summary...............................................................................................................................................24
Chapter 2: Shell Programming.......................................................................................................................25
Overview...............................................................................................................................................25
What is a Shell?....................................................................................................................................26
Pipes and Redirection...........................................................................................................................27
Redirecting Output.........................................................................................................................27
Redirecting Input............................................................................................................................28
Pipes...............................................................................................................................................28
i
Table of Contents
Chapter 2: Shell Programming
The Shell as a Programming Language................................................................................................29
Interactive Programs.......................................................................................................................29
Creating a Script.............................................................................................................................30
Making a Script Executable...........................................................................................................31
Shell Syntax..........................................................................................................................................32
Variables.........................................................................................................................................33
Conditions......................................................................................................................................36
Control Structures...........................................................................................................................38
Functions........................................................................................................................................49
Try It Out − A Simple Function......................................................................................................50
How It Works..................................................................................................................................50
Try It Out − Returning a Value.......................................................................................................51
How It Works..................................................................................................................................52
Commands......................................................................................................................................52
Command Execution......................................................................................................................62
Here Documents.............................................................................................................................66
Try It Out − Using Here Documents...............................................................................................66
Try It Out − Another Use for a Here Document.............................................................................67
How It Works..................................................................................................................................67
Debugging Scripts..........................................................................................................................67
Putting it All Together..........................................................................................................................68
Requirements..................................................................................................................................68
Design.............................................................................................................................................69
Try It Out − A CD Application.......................................................................................................70
Notes................................................................................................................................................76
Summary...............................................................................................................................................77
Chapter 3: Working with Files.......................................................................................................................78
Overview...............................................................................................................................................78
UNIX File Structure..............................................................................................................................78
Directories......................................................................................................................................79
Files and Devices............................................................................................................................79
System Calls and Device Drivers.........................................................................................................81
Library Functions..................................................................................................................................82
Low−level File Access..........................................................................................................................82
write.................................................................................................................................................83
read..................................................................................................................................................83
open.................................................................................................................................................84
Initial Permissions...........................................................................................................................85
umask...............................................................................................................................................86
close.................................................................................................................................................87
ioctl..................................................................................................................................................87
Try It Out − A File Copy Program..................................................................................................87
Other System Calls for Managing Files.........................................................................................89
The Standard I/O Library......................................................................................................................91
fopen................................................................................................................................................92
fread.................................................................................................................................................92
fwrite...............................................................................................................................................93
fclose...............................................................................................................................................93
ii
Table of Contents
Chapter 3: Working with Files
fflush................................................................................................................................................93
fseek.................................................................................................................................................93
fgetc, getc, getchar...........................................................................................................................94
fputc, putc, putchar..........................................................................................................................94
fgets, gets.........................................................................................................................................94
Formatted Input and Output...........................................................................................................95
Other Stream Functions..................................................................................................................98
Try It Out − Another File Copy Program.......................................................................................99
Stream Errors..................................................................................................................................99
Streams and File Descriptors........................................................................................................100
File and Directory Maintenance..........................................................................................................101
chmod............................................................................................................................................101
chown............................................................................................................................................101
unlink, link, symlink......................................................................................................................101
mkdir, rmdir...................................................................................................................................102
chdir, getcwd.................................................................................................................................102
Scanning Directories...........................................................................................................................103
opendir...........................................................................................................................................103
readdir............................................................................................................................................103
telldir.............................................................................................................................................104
seekdir...........................................................................................................................................104
closedir..........................................................................................................................................104
Try It Out − A Directory Scanning Program................................................................................105
How It Works................................................................................................................................106
Errors...................................................................................................................................................107
Advanced Topics................................................................................................................................107
fcntl................................................................................................................................................108
mmap.............................................................................................................................................109
Try It Out − Using mmap.............................................................................................................110
Summary.............................................................................................................................................111
Chapter 4: The UNIX Environment............................................................................................................112
Overview.............................................................................................................................................112
Program Arguments............................................................................................................................112
Try It Out − Program Arguments.................................................................................................113
How It Works................................................................................................................................114
getopt............................................................................................................................................114
Try It Out − getopt.......................................................................................................................115
How It Works................................................................................................................................116
Environment Variables.......................................................................................................................116
Try It Out − getenv and putenv0...................................................................................................117
Use of Environment Variables.....................................................................................................118
The environ Variable....................................................................................................................119
Try It Out − environ......................................................................................................................119
How It Works................................................................................................................................119
Time and Date.....................................................................................................................................119
Try It Out − time...........................................................................................................................120
How It Works................................................................................................................................121
Try It Out − gmtime.....................................................................................................................121
iii
Table of Contents
Chapter 4: The UNIX Environment
How It Works................................................................................................................................122
Try It Out − ctime.........................................................................................................................123
How It Works................................................................................................................................123
Try It Out − strftime and strptime................................................................................................125
How It Works................................................................................................................................126
Temporary Files..................................................................................................................................126
Try It Out − tmpnam and tmpfile.................................................................................................127
How It Works................................................................................................................................127
User Information.................................................................................................................................128
Try It Out − User Information.......................................................................................................129
How It Works................................................................................................................................130
Other User Information Functions...............................................................................................130
Host Information.................................................................................................................................131
Try It Out − Host Information.......................................................................................................131
How It Works................................................................................................................................132
Licensing......................................................................................................................................132
Logging...............................................................................................................................................132
Try It Out − syslog........................................................................................................................134
How It Works................................................................................................................................134
Configuring Logs.........................................................................................................................134
Try It Out − logmask.....................................................................................................................135
How It Works................................................................................................................................136
Resources and Limits..........................................................................................................................136
Try It Out − Resource Limits.......................................................................................................138
How It Works................................................................................................................................140
Summary.............................................................................................................................................140
Chapter 5: Terminals....................................................................................................................................141
Overview.............................................................................................................................................141
Reading from and Writing to the Terminal.........................................................................................141
Try It Out − Menu Routines in C..................................................................................................141
How It Works................................................................................................................................142
Why It Doesn't Quite Work...........................................................................................................143
Handling Redirected Output.........................................................................................................144
Try It Out − Checking for Output Redirection..............................................................................144
How It Works................................................................................................................................145
Talking to the Terminal................................................................................................................145
Try It Out − Using /dev/tty............................................................................................................146
The Terminal Driver and the General Terminal Interface..................................................................147
Overview......................................................................................................................................147
Hardware Model...........................................................................................................................148
The termios Structure..........................................................................................................................149
Input Modes..................................................................................................................................150
Output Modes...............................................................................................................................151
Control Modes..............................................................................................................................152
Local Modes.................................................................................................................................152
Special Control Characters...........................................................................................................153
Terminal Speed.............................................................................................................................156
Additional Functions....................................................................................................................156
iv
Table of Contents
Chapter 5: Terminals
Try It Out − A Password Program with termios...........................................................................157
How It Works................................................................................................................................158
Try It Out − Reading Each Character............................................................................................158
How It Works................................................................................................................................159
Terminal Output..................................................................................................................................159
Terminal Type..............................................................................................................................159
Identify Your Terminal Type.......................................................................................................160
Using terminfo Capabilities..........................................................................................................162
Detecting Keystrokes..........................................................................................................................167
Try It Out − Your Very Own kbhit...............................................................................................167
How It Works................................................................................................................................169
Pseudo Terminals.........................................................................................................................169
Summary.............................................................................................................................................169
Chapter 6: Curses..........................................................................................................................................170
Overview.............................................................................................................................................170
Compiling with curses........................................................................................................................170
Concepts..............................................................................................................................................171
Try It Out − A Simple curses Program.........................................................................................172
Initialization and Termination.............................................................................................................173
Output to the Screen............................................................................................................................173
Reading from the Screen.....................................................................................................................174
Clearing the Screen.............................................................................................................................175
Moving the Cursor..............................................................................................................................175
Character Attributes............................................................................................................................175
Try It Out − Moving, Inserting and Attributes..............................................................................176
The Keyboard......................................................................................................................................177
Keyboard Modes..........................................................................................................................177
Keyboard Input.............................................................................................................................178
Try It Out− Keyboard Modes and Input........................................................................................178
How It Works................................................................................................................................179
Windows.............................................................................................................................................180
The WINDOW Structure..............................................................................................................180
Generalized Functions..................................................................................................................180
Moving and Updating a Window.................................................................................................181
Try It Out − Multiple Windows....................................................................................................182
Optimizing Screen Refreshes.......................................................................................................184
Subwindows........................................................................................................................................185
Try It Out − Subwindows..............................................................................................................185
How It Works................................................................................................................................187
The Keypad.........................................................................................................................................187
Try It Out − Using the Keypad.....................................................................................................188
Color...................................................................................................................................................189
Try It Out − Colors.......................................................................................................................190
Redefining Colors.........................................................................................................................191
Pads.....................................................................................................................................................191
Try It Out − Using a Pad...............................................................................................................192
The CD Collection Application..........................................................................................................193
Try It Out − A New CD Collection Application...........................................................................194
v
Table of Contents
Chapter 6: Curses
Try It Out − Looking at main........................................................................................................196
Try It Out − The Menu..................................................................................................................196
Try It Out − Database File Manipulation.....................................................................................198
Try It Out − Querying the CD Database.......................................................................................202
Summary.............................................................................................................................................206
Chapter 7: Data Management......................................................................................................................207
Overview.............................................................................................................................................207
Managing Memory..............................................................................................................................207
Simple Memory Allocation..........................................................................................................207
Try It Out − Simple Memory Allocation......................................................................................208
How It Works................................................................................................................................208
Allocating Lots of Memory..........................................................................................................208
Try It Out − Asking for all Physical Memory..............................................................................209
How It Works................................................................................................................................209
Try It Out − Available Memory....................................................................................................210
How It Works................................................................................................................................210
Abusing Memory..........................................................................................................................211
Try It Out − Abuse Your Memory................................................................................................211
How It Works................................................................................................................................212
The Null Pointer...........................................................................................................................212
Try It Out − Accessing a Null Pointer..........................................................................................212
How It Works................................................................................................................................213
How It Works................................................................................................................................213
Freeing Memory...........................................................................................................................213
Try It Out − Freeing Memory.......................................................................................................214
How It Works................................................................................................................................214
Other Memory Allocation Functions...........................................................................................214
File Locking........................................................................................................................................215
Creating Lock Files......................................................................................................................215
Try It Out − Creating a Lock File.................................................................................................216
How It Works................................................................................................................................216
Try It Out − Cooperative Lock Files............................................................................................217
How It Works................................................................................................................................218
Locking Regions...........................................................................................................................218
Use of read and write with Locking.............................................................................................221
Try It Out − Locking a File with fcntl...........................................................................................221
How It Works................................................................................................................................222
Try It Out − Testing Locks on a File.............................................................................................223
How It Works................................................................................................................................225
Competing Locks.........................................................................................................................226
Try It Out − Competing Locks.....................................................................................................226
How It Works................................................................................................................................228
Other Lock Commands................................................................................................................228
Deadlocks.....................................................................................................................................229
Databases............................................................................................................................................229
The dbm Database........................................................................................................................229
The dbm Routines........................................................................................................................230
dbm Access Functions..................................................................................................................232
vi
Table of Contents
Chapter 7: Data Management
Additional dbm Functions............................................................................................................235
The CD Application............................................................................................................................237
The CD Application Using dbm...................................................................................................238
Try It Out − cd_data.h...................................................................................................................238
Try It Out − app_ui.c.....................................................................................................................239
Try It Out − cd_access.c...............................................................................................................247
Summary.............................................................................................................................................253
Chapter 8: Development Tools.....................................................................................................................254
Overview.............................................................................................................................................254
Problems of Multiple Source Files.....................................................................................................254
The make Command and Makefiles...................................................................................................255
The Syntax of Makefiles..............................................................................................................255
Options and Parameters to make..................................................................................................255
Comments in a makefile...............................................................................................................258
Macros in a makefile....................................................................................................................258
Try It Out − A Makefile with Macros...........................................................................................259
How It Works................................................................................................................................259
Multiple Targets...........................................................................................................................260
Try It Out − Multiple Targets........................................................................................................260
How It Works................................................................................................................................262
Built−in Rules..............................................................................................................................262
Suffix Rules..................................................................................................................................263
Try It Out − Suffix Rules..............................................................................................................263
How It Works................................................................................................................................264
Managing Libraries with make.....................................................................................................264
Try It Out − Managing a Library..................................................................................................264
How It Works................................................................................................................................265
Advanced Topic: Makefiles and Subdirectories..........................................................................266
GNU make and gcc......................................................................................................................266
Try It Out − gcc −MM...................................................................................................................267
How It Works................................................................................................................................267
Source Code Control...........................................................................................................................267
RCS..............................................................................................................................................267
SCCS............................................................................................................................................273
CVS..............................................................................................................................................274
Writing a Manual Page.......................................................................................................................278
Distributing Software..........................................................................................................................281
The patch Program.......................................................................................................................281
Other Distribution Utilities...........................................................................................................283
Summary.............................................................................................................................................285
Chapter 9: Debugging....................................................................................................................................286
Types of Error.....................................................................................................................................286
Specification Errors......................................................................................................................286
Design Errors................................................................................................................................286
Coding Errors...............................................................................................................................286
General Debugging Techniques..........................................................................................................287
A Program with Bugs...................................................................................................................287
vii
Table of Contents
Chapter 9: Debugging
Code Inspection............................................................................................................................289
Instrumentation.............................................................................................................................290
Try It Out − Debug Information....................................................................................................291
How It Works................................................................................................................................291
Controlled Execution....................................................................................................................292
Debugging with gdb............................................................................................................................293
Starting gdb..................................................................................................................................293
Running a Program.......................................................................................................................294
Stack Trace...................................................................................................................................294
Examining Variables....................................................................................................................295
Listing the Program......................................................................................................................296
Setting Breakpoints......................................................................................................................296
Patching with the Debugger.........................................................................................................299
Learning more about gdb.............................................................................................................300
More Debugging Tools.......................................................................................................................300
Lint: Removing the Fluff from Your Programs...........................................................................301
Function Call Tools......................................................................................................................302
Execution Profiling.......................................................................................................................304
Assertions............................................................................................................................................304
Problems with assert.....................................................................................................................305
Try It Out − assert........................................................................................................................305
How It Works................................................................................................................................306
Memory Debugging............................................................................................................................306
ElectricFence................................................................................................................................307
Try It Out − ElectricFence............................................................................................................307
How It Works................................................................................................................................308
Checker.........................................................................................................................................308
Try It Out − Checker.....................................................................................................................308
How It Works................................................................................................................................309
Resources............................................................................................................................................310
Summary.............................................................................................................................................310
Chapter 10: Processes and Signals...............................................................................................................311
Overview.............................................................................................................................................311
What is a Process?..............................................................................................................................311
Process Structure.................................................................................................................................311
The Process Table........................................................................................................................313
Viewing Processes........................................................................................................................313
System Processes..........................................................................................................................314
Process Scheduling.......................................................................................................................315
Starting New Processes.......................................................................................................................316
Try It Out − system.......................................................................................................................316
How It Works................................................................................................................................317
Replacing a Process Image............................................................................................................317
Try It Out − execlp.......................................................................................................................318
How It Works................................................................................................................................319
Duplicating a Process Image.........................................................................................................319
Try It Out − fork...........................................................................................................................320
How It Works................................................................................................................................321
viii
Table of Contents
Chapter 10: Processes and Signals
Waiting for a Process...................................................................................................................321
Try It Out − wait............................................................................................................................322
How It Works................................................................................................................................323
Zombie Processes.........................................................................................................................323
Try It Out − Zombies....................................................................................................................324
How It Works................................................................................................................................324
Input and Output Redirection.......................................................................................................325
Try It Out − Redirection...............................................................................................................325
How It Works................................................................................................................................326
Threads.........................................................................................................................................326
Signals.................................................................................................................................................326
Try It Out − Signal Handling.......................................................................................................328
How It Works................................................................................................................................329
Sending Signals............................................................................................................................330
Try It Out − An Alarm Clock........................................................................................................330
How It Works................................................................................................................................331
Signal Sets....................................................................................................................................334
Summary.............................................................................................................................................337
Chapter 11: POSIX Threads.........................................................................................................................338
What is a Thread?...............................................................................................................................338
Advantages and Drawbacks of Threads.......................................................................................338
Checking for Thread Support..............................................................................................................339
Try it out − POSIX compliance test..............................................................................................339
How it works.................................................................................................................................340
A First Threads Program.....................................................................................................................340
Try it out − a simple threaded program.........................................................................................342
How it works.................................................................................................................................343
Simultaneous Execution.....................................................................................................................344
Try it out − simultaneous execution of two threads......................................................................344
How it works.................................................................................................................................345
Synchronization..................................................................................................................................345
Synchronization with Semaphores...............................................................................................345
Try it out − a thread semaphore....................................................................................................347
How it works.................................................................................................................................349
Synchronization with Mutexes.....................................................................................................350
Try it out − a thread mutex............................................................................................................350
How it works.................................................................................................................................352
Thread Attributes................................................................................................................................353
detachedstate.................................................................................................................................354
schedpolicy....................................................................................................................................354
schedparam....................................................................................................................................355
inheritsched...................................................................................................................................355
scope..............................................................................................................................................355
stacksize.........................................................................................................................................355
Try it out − setting the detached state attribute.............................................................................355
How it works.................................................................................................................................356
Thread Attributes − Scheduling....................................................................................................357
Try is out − scheduling..................................................................................................................357
ix
Table of Contents
Chapter 11: POSIX Threads
How it works.................................................................................................................................357
Canceling a Thread.............................................................................................................................357
Try it out − canceling a thread......................................................................................................358
How it works.................................................................................................................................360
Threads in Abundance........................................................................................................................360
Try it out − many threads..............................................................................................................360
How it works.................................................................................................................................362
Summary.............................................................................................................................................363
Chapter 12: Inter−process Communication: Pipes....................................................................................364
Overview.............................................................................................................................................364
What is a Pipe?....................................................................................................................................364
Process Pipes.......................................................................................................................................365
popen.............................................................................................................................................365
pclose.............................................................................................................................................365
Try It Out − Reading Output From an External Program............................................................365
How It Works................................................................................................................................366
Sending Output to popen..............................................................................................................366
Try It Out − Sending Output to an External Program...................................................................366
How It Works................................................................................................................................367
The Pipe Call......................................................................................................................................369
Try It Out − The pipe Function.....................................................................................................370
How It Works................................................................................................................................371
Try It Out − Pipes across a fork...................................................................................................371
How It Works................................................................................................................................372
Parent and Child Processes.................................................................................................................372
Try It Out − Pipes and exec...........................................................................................................372
How It Works................................................................................................................................373
Reading Closed Pipes...................................................................................................................374
Pipes Used as Standard Input and Output....................................................................................374
Named Pipes: FIFOs...........................................................................................................................377
Try It Out − Creating a Named Pipe.............................................................................................378
How It Works................................................................................................................................378
Accessing a FIFO.........................................................................................................................378
Try It Out − Accessing a FIFO File.............................................................................................379
How It Works................................................................................................................................379
Advanced Topic: Client/Server using FIFOs......................................................................................385
Try It Out − An Example Client/Server Application...................................................................385
How It Works................................................................................................................................388
The CD Application............................................................................................................................388
Aims.............................................................................................................................................389
Implementation.............................................................................................................................390
Try It Out − The Header File, cliserv.h.........................................................................................392
Client Interface Functions............................................................................................................393
Try It Out − The Client's Interpreter.............................................................................................393
The Server Interface.....................................................................................................................399
Try It Out − server.c......................................................................................................................399
The Pipe........................................................................................................................................402
Try It Out − Pipes Implementation Header...................................................................................402
x
Table of Contents
Chapter 12: Inter−process Communication: Pipes
Application Summary...................................................................................................................407
Summary.............................................................................................................................................407
Chapter 13: Semaphores, Message Queues and Shared Memory.............................................................409
Semaphores.........................................................................................................................................409
Semaphore Definition...................................................................................................................410
A Theoretical Example.................................................................................................................410
UNIX Semaphore Facilities.........................................................................................................411
Using Semaphores........................................................................................................................413
Try It Out − Semaphores...............................................................................................................414
How It Works................................................................................................................................416
Semaphore Summary...................................................................................................................417
Shared Memory...................................................................................................................................417
Overview......................................................................................................................................417
Shared Memory Functions...........................................................................................................418
Shared Memory Summary............................................................................................................423
Message Queues..................................................................................................................................423
Overview......................................................................................................................................424
Message Queue Functions............................................................................................................424
Message Queue Summary............................................................................................................429
The Application..................................................................................................................................429
Try It Out − Revising the Server Functions..................................................................................429
Try It Out − Revising the Client Functions...................................................................................431
IPC Status Commands........................................................................................................................433
Semaphores..................................................................................................................................433
Shared Memory............................................................................................................................433
Message Queues...........................................................................................................................433
Summary.............................................................................................................................................434
Chapter 14: Sockets.......................................................................................................................................435
Overview.............................................................................................................................................435
What is a Socket?................................................................................................................................435
Socket Connections.............................................................................................................................435
Try It Out − A Simple Local Client..............................................................................................436
Try It Out − A Simple Local Server.............................................................................................437
Socket Attributes..........................................................................................................................439
Creating a Socket..........................................................................................................................441
Socket Addresses..........................................................................................................................442
Naming a Socket..........................................................................................................................442
Creating a Socket Queue..............................................................................................................443
Accepting Connections.................................................................................................................443
Requesting Connections...............................................................................................................444
Closing a Socket...........................................................................................................................445
Socket Communications...............................................................................................................445
Try It Out − Network Client..........................................................................................................446
How It Works................................................................................................................................446
Try It Out − Network Server........................................................................................................446
How It Works................................................................................................................................447
Host and Network Byte Ordering.................................................................................................447
xi
Table of Contents
Chapter 14: Sockets
Network Information..........................................................................................................................449
Try It Out − Network Information...............................................................................................450
How It Works................................................................................................................................451
Try It Out − Connecting to a Standard Service............................................................................452
How It Works................................................................................................................................453
The Internet Daemon....................................................................................................................453
Socket Options.............................................................................................................................454
Multiple Clients..................................................................................................................................454
Try It Out − A Server for Multiple Clients...................................................................................455
How It Works................................................................................................................................457
select...................................................................................................................................................457
Try It Out − select.........................................................................................................................458
How It Works................................................................................................................................460
Multiple Clients............................................................................................................................460
Try It Out − An Improved Multiple Client/Server........................................................................460
Summary.............................................................................................................................................463
Chapter 15: Tcl: Tool Command Language...............................................................................................464
Overview.............................................................................................................................................464
A Tcl Overview...................................................................................................................................464
Our First Tcl Program..................................................................................................................464
Tcl Commands.............................................................................................................................465
Variables and Values....................................................................................................................466
Quoting and Substitution..............................................................................................................467
Calculation....................................................................................................................................470
Control Structures.........................................................................................................................471
Error Handling..............................................................................................................................473
String Operations..........................................................................................................................474
Arrays...........................................................................................................................................479
Lists..............................................................................................................................................481
Procedures....................................................................................................................................486
Try It Out − Procedures................................................................................................................486
How It Works................................................................................................................................487
Input and Output...........................................................................................................................487
A Tcl Program.....................................................................................................................................491
Try It Out − A Concordance Program...........................................................................................491
How It Works................................................................................................................................493
Network Support...........................................................................................................................493
Try It Out − socket.......................................................................................................................494
How It Works................................................................................................................................494
Creating a New Tcl.............................................................................................................................494
Tcl Extensions.....................................................................................................................................494
expect............................................................................................................................................494
[incr Tcl].......................................................................................................................................495
TclX..............................................................................................................................................495
Graphics........................................................................................................................................495
Summary.............................................................................................................................................495
xii
Table of Contents
Chapter 16: Programming for X..................................................................................................................496
Overview.............................................................................................................................................496
What is X?...........................................................................................................................................496
X Server.........................................................................................................................................497
X Protocol......................................................................................................................................497
Xlib................................................................................................................................................497
X Clients........................................................................................................................................497
X Toolkits.....................................................................................................................................497
X Window Manager............................................................................................................................498
The X Programming Model................................................................................................................499
Start Up.........................................................................................................................................499
Main Loop....................................................................................................................................500
Clean Up.......................................................................................................................................500
Fast Track X Programming.................................................................................................................501
The Tk Toolkit....................................................................................................................................501
Windows Programming................................................................................................................502
Try It Out − Saying Hello.............................................................................................................503
How It Works................................................................................................................................503
Configuration Files.......................................................................................................................504
More Commands..........................................................................................................................504
Tk Widgets...................................................................................................................................505
Try It Out − Learning More..........................................................................................................505
How It Works................................................................................................................................506
Tk's Built−in Dialogs...................................................................................................................529
Color Chooser................................................................................................................................529
Get Open/Save Files......................................................................................................................530
Color Schemes..............................................................................................................................531
Fonts.............................................................................................................................................532
Bindings........................................................................................................................................532
BindTags......................................................................................................................................533
Geometry Management................................................................................................................535
Focus and Navigation...................................................................................................................537
Option Database...........................................................................................................................538
Inter−application Communication................................................................................................539
Selection.......................................................................................................................................539
Clipboard......................................................................................................................................540
Window Manager.........................................................................................................................541
Dynamic/Static Loading...............................................................................................................542
Safe Tk.........................................................................................................................................543
A Mega−Widget.................................................................................................................................544
Package File Generation................................................................................................................553
An Application Using the Tree Mega−Widget...................................................................................554
Tk Process Log Viewer.......................................................................................................................556
Internationalization.......................................................................................................................566
Where Now?.................................................................................................................................567
Tix.................................................................................................................................................567
[incr Tk].........................................................................................................................................567
BLT...............................................................................................................................................567
Summary.............................................................................................................................................568
xiii
Table of Contents
Chapter 17: Programming GNOME using GTK+.....................................................................................569
Overview.............................................................................................................................................569
An Introduction to GNOME...............................................................................................................569
The GNOME Architecture...........................................................................................................570
The GNOME Desktop..................................................................................................................571
Programming in GNOME using GTK+.......................................................................................572
An Application in GNOME.........................................................................................................586
Summary.............................................................................................................................................594
Chapter 18: The Perl Programming Language..........................................................................................595
Overview.............................................................................................................................................595
An Introduction to Perl.................................................................................................................595
A Full Example............................................................................................................................612
Perl on the Command Line...........................................................................................................617
Modules........................................................................................................................................618
The CD Database Revisited.........................................................................................................621
Summary.............................................................................................................................................625
Chapter 19: Programming for the Internet: HTML..................................................................................626
Overview.............................................................................................................................................626
What is the World Wide Web?...........................................................................................................626
Terminology........................................................................................................................................627
The HyperText Transfer Protocol (HTTP)...................................................................................627
Multimedia Internet Mail Extensions (MIME)............................................................................627
Standard Generalized Markup Language (SGML)......................................................................627
Document Type Definition (DTD)...............................................................................................627
HyperText Markup Language (HTML).......................................................................................627
Extensible Markup Language (XML)..........................................................................................628
Cascading Style Sheets (CSS)......................................................................................................628
Extensible Hypertext Markup Language (XHTML)....................................................................628
Uniform Resource Locator (URL)...............................................................................................628
Uniform Resource Identifier (URI)..............................................................................................628
Writing HTML....................................................................................................................................629
Try It Out − A Simple HTML Document....................................................................................629
How It Works................................................................................................................................629
A More Formal Look at HTML..........................................................................................................630
HTML Tags..................................................................................................................................631
Images..........................................................................................................................................637
Try It Out − Adding an Image......................................................................................................638
How It Works................................................................................................................................639
Tables...........................................................................................................................................639
Try It Out − A Table....................................................................................................................640
How It Works................................................................................................................................640
Try It Out − Another Table...........................................................................................................641
How It Works................................................................................................................................642
Anchors or Hyperlinks.................................................................................................................642
Try It Out − Anchors....................................................................................................................643
How It Works................................................................................................................................644
Combining Anchors and Images..................................................................................................644
Try It Out − Images as Anchors...................................................................................................644
xiv
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming
Beginning linux-programming

Contenu connexe

Tendances

Faronics Deep Freeze Enterprise User Guide
Faronics Deep Freeze Enterprise User GuideFaronics Deep Freeze Enterprise User Guide
Faronics Deep Freeze Enterprise User GuideFaronics
 
Deep Freeze for Mac User Guide
Deep Freeze for Mac User GuideDeep Freeze for Mac User Guide
Deep Freeze for Mac User GuideFaronics
 
New linux course_modules
New linux course_modulesNew linux course_modules
New linux course_modulessanmugamk
 
Verio Web Hosting Virtual Server Handbook
Verio Web Hosting Virtual Server HandbookVerio Web Hosting Virtual Server Handbook
Verio Web Hosting Virtual Server Handbookwebhostingguy
 
Cesvip 2010 first_linux_module
Cesvip 2010 first_linux_moduleCesvip 2010 first_linux_module
Cesvip 2010 first_linux_moduleAlessandro Grandi
 
System administration guide
System administration guideSystem administration guide
System administration guidemeoconhs2612
 
Certification guide series ibm tivoli provisioning manager v5.1 sg247262
Certification guide series ibm tivoli provisioning manager v5.1 sg247262Certification guide series ibm tivoli provisioning manager v5.1 sg247262
Certification guide series ibm tivoli provisioning manager v5.1 sg247262Banking at Ho Chi Minh city
 
BOOK - IBM zOS V1R10 communications server TCP / IP implementation volume 1 b...
BOOK - IBM zOS V1R10 communications server TCP / IP implementation volume 1 b...BOOK - IBM zOS V1R10 communications server TCP / IP implementation volume 1 b...
BOOK - IBM zOS V1R10 communications server TCP / IP implementation volume 1 b...Satya Harish
 
R installation and administration
R installation and administrationR installation and administration
R installation and administrationEric Espino
 
Windump
WindumpWindump
Windumpjk847
 
Zenoss administration
Zenoss administrationZenoss administration
Zenoss administrationlibros007
 

Tendances (16)

Faronics Deep Freeze Enterprise User Guide
Faronics Deep Freeze Enterprise User GuideFaronics Deep Freeze Enterprise User Guide
Faronics Deep Freeze Enterprise User Guide
 
fundamentals of linux
fundamentals of linuxfundamentals of linux
fundamentals of linux
 
Deep Freeze for Mac User Guide
Deep Freeze for Mac User GuideDeep Freeze for Mac User Guide
Deep Freeze for Mac User Guide
 
New linux course_modules
New linux course_modulesNew linux course_modules
New linux course_modules
 
Redp4469
Redp4469Redp4469
Redp4469
 
Verio Web Hosting Virtual Server Handbook
Verio Web Hosting Virtual Server HandbookVerio Web Hosting Virtual Server Handbook
Verio Web Hosting Virtual Server Handbook
 
Cesvip 2010 first_linux_module
Cesvip 2010 first_linux_moduleCesvip 2010 first_linux_module
Cesvip 2010 first_linux_module
 
System administration guide
System administration guideSystem administration guide
System administration guide
 
R admin
R adminR admin
R admin
 
Certification guide series ibm tivoli provisioning manager v5.1 sg247262
Certification guide series ibm tivoli provisioning manager v5.1 sg247262Certification guide series ibm tivoli provisioning manager v5.1 sg247262
Certification guide series ibm tivoli provisioning manager v5.1 sg247262
 
Ubuntu manual
Ubuntu manualUbuntu manual
Ubuntu manual
 
BOOK - IBM zOS V1R10 communications server TCP / IP implementation volume 1 b...
BOOK - IBM zOS V1R10 communications server TCP / IP implementation volume 1 b...BOOK - IBM zOS V1R10 communications server TCP / IP implementation volume 1 b...
BOOK - IBM zOS V1R10 communications server TCP / IP implementation volume 1 b...
 
R installation and administration
R installation and administrationR installation and administration
R installation and administration
 
CPanel User Guide
CPanel User GuideCPanel User Guide
CPanel User Guide
 
Windump
WindumpWindump
Windump
 
Zenoss administration
Zenoss administrationZenoss administration
Zenoss administration
 

Similaire à Beginning linux-programming

Software engineering II
Software engineering IISoftware engineering II
Software engineering IIAnit Thapaliya
 
Building embedded linux systems
Building embedded linux systemsBuilding embedded linux systems
Building embedded linux systemstrx2001
 
Java : How to Program - 7e
Java : How to Program - 7eJava : How to Program - 7e
Java : How to Program - 7eCHIH-PEI WEN
 
Java how to_program__7th_edition
Java how to_program__7th_editionJava how to_program__7th_edition
Java how to_program__7th_editionABDUmomo
 
Linux for professional
Linux for professionalLinux for professional
Linux for professionalBennethObilor
 
First7124911 visual-cpp-and-mfc-programming
First7124911 visual-cpp-and-mfc-programmingFirst7124911 visual-cpp-and-mfc-programming
First7124911 visual-cpp-and-mfc-programmingxmeszeus
 
Verio Web Hosting Virtual Server Handbook
Verio Web Hosting Virtual Server HandbookVerio Web Hosting Virtual Server Handbook
Verio Web Hosting Virtual Server Handbookwebhostingguy
 
Verio Web Hosting Virtual Server Handbook
Verio Web Hosting Virtual Server HandbookVerio Web Hosting Virtual Server Handbook
Verio Web Hosting Virtual Server Handbookwebhostingguy
 
LaCie Network Space 2
LaCie Network Space 2LaCie Network Space 2
LaCie Network Space 2rosselli00
 
Plesk 8.1 for Linux/UNIX
Plesk 8.1 for Linux/UNIXPlesk 8.1 for Linux/UNIX
Plesk 8.1 for Linux/UNIXwebhostingguy
 
Plesk 8.1 for Linux/UNIX
Plesk 8.1 for Linux/UNIXPlesk 8.1 for Linux/UNIX
Plesk 8.1 for Linux/UNIXwebhostingguy
 
Lync server2010licensingguide en-us
Lync server2010licensingguide en-usLync server2010licensingguide en-us
Lync server2010licensingguide en-usallegra601
 
Aplplication server instalacion
Aplplication server instalacionAplplication server instalacion
Aplplication server instalacionhkaczuba
 

Similaire à Beginning linux-programming (20)

Software engineering II
Software engineering IISoftware engineering II
Software engineering II
 
fundamentals of linux
fundamentals of linuxfundamentals of linux
fundamentals of linux
 
fundamentals of linux
fundamentals of linuxfundamentals of linux
fundamentals of linux
 
Building embedded linux systems
Building embedded linux systemsBuilding embedded linux systems
Building embedded linux systems
 
Tortoise svn 1.7-en
Tortoise svn 1.7-enTortoise svn 1.7-en
Tortoise svn 1.7-en
 
Java : How to Program - 7e
Java : How to Program - 7eJava : How to Program - 7e
Java : How to Program - 7e
 
Java how to_program__7th_edition
Java how to_program__7th_editionJava how to_program__7th_edition
Java how to_program__7th_edition
 
Linux for professional
Linux for professionalLinux for professional
Linux for professional
 
Linux note for professionals
Linux note for professionalsLinux note for professionals
Linux note for professionals
 
First7124911 visual-cpp-and-mfc-programming
First7124911 visual-cpp-and-mfc-programmingFirst7124911 visual-cpp-and-mfc-programming
First7124911 visual-cpp-and-mfc-programming
 
Verio Web Hosting Virtual Server Handbook
Verio Web Hosting Virtual Server HandbookVerio Web Hosting Virtual Server Handbook
Verio Web Hosting Virtual Server Handbook
 
Verio Web Hosting Virtual Server Handbook
Verio Web Hosting Virtual Server HandbookVerio Web Hosting Virtual Server Handbook
Verio Web Hosting Virtual Server Handbook
 
Comerv3 1-12(2)
Comerv3 1-12(2)Comerv3 1-12(2)
Comerv3 1-12(2)
 
End note
End noteEnd note
End note
 
LaCie Network Space 2
LaCie Network Space 2LaCie Network Space 2
LaCie Network Space 2
 
Plesk 8.1 for Linux/UNIX
Plesk 8.1 for Linux/UNIXPlesk 8.1 for Linux/UNIX
Plesk 8.1 for Linux/UNIX
 
Plesk 8.1 for Linux/UNIX
Plesk 8.1 for Linux/UNIXPlesk 8.1 for Linux/UNIX
Plesk 8.1 for Linux/UNIX
 
Lync server2010licensingguide en-us
Lync server2010licensingguide en-usLync server2010licensingguide en-us
Lync server2010licensingguide en-us
 
Tx16 wx user manual
Tx16 wx user manualTx16 wx user manual
Tx16 wx user manual
 
Aplplication server instalacion
Aplplication server instalacionAplplication server instalacion
Aplplication server instalacion
 

Dernier

Introduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher EducationIntroduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher Educationpboyjonauth
 
CARE OF CHILD IN INCUBATOR..........pptx
CARE OF CHILD IN INCUBATOR..........pptxCARE OF CHILD IN INCUBATOR..........pptx
CARE OF CHILD IN INCUBATOR..........pptxGaneshChakor2
 
Employee wellbeing at the workplace.pptx
Employee wellbeing at the workplace.pptxEmployee wellbeing at the workplace.pptx
Employee wellbeing at the workplace.pptxNirmalaLoungPoorunde1
 
Nutritional Needs Presentation - HLTH 104
Nutritional Needs Presentation - HLTH 104Nutritional Needs Presentation - HLTH 104
Nutritional Needs Presentation - HLTH 104misteraugie
 
18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf
18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf
18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdfssuser54595a
 
BASLIQ CURRENT LOOKBOOK LOOKBOOK(1) (1).pdf
BASLIQ CURRENT LOOKBOOK  LOOKBOOK(1) (1).pdfBASLIQ CURRENT LOOKBOOK  LOOKBOOK(1) (1).pdf
BASLIQ CURRENT LOOKBOOK LOOKBOOK(1) (1).pdfSoniaTolstoy
 
Organic Name Reactions for the students and aspirants of Chemistry12th.pptx
Organic Name Reactions  for the students and aspirants of Chemistry12th.pptxOrganic Name Reactions  for the students and aspirants of Chemistry12th.pptx
Organic Name Reactions for the students and aspirants of Chemistry12th.pptxVS Mahajan Coaching Centre
 
Web & Social Media Analytics Previous Year Question Paper.pdf
Web & Social Media Analytics Previous Year Question Paper.pdfWeb & Social Media Analytics Previous Year Question Paper.pdf
Web & Social Media Analytics Previous Year Question Paper.pdfJayanti Pande
 
Interactive Powerpoint_How to Master effective communication
Interactive Powerpoint_How to Master effective communicationInteractive Powerpoint_How to Master effective communication
Interactive Powerpoint_How to Master effective communicationnomboosow
 
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptxPOINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptxSayali Powar
 
Advanced Views - Calendar View in Odoo 17
Advanced Views - Calendar View in Odoo 17Advanced Views - Calendar View in Odoo 17
Advanced Views - Calendar View in Odoo 17Celine George
 
Student login on Anyboli platform.helpin
Student login on Anyboli platform.helpinStudent login on Anyboli platform.helpin
Student login on Anyboli platform.helpinRaunakKeshri1
 
Separation of Lanthanides/ Lanthanides and Actinides
Separation of Lanthanides/ Lanthanides and ActinidesSeparation of Lanthanides/ Lanthanides and Actinides
Separation of Lanthanides/ Lanthanides and ActinidesFatimaKhan178732
 
Beyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global ImpactBeyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global ImpactPECB
 
The Most Excellent Way | 1 Corinthians 13
The Most Excellent Way | 1 Corinthians 13The Most Excellent Way | 1 Corinthians 13
The Most Excellent Way | 1 Corinthians 13Steve Thomason
 
Q4-W6-Restating Informational Text Grade 3
Q4-W6-Restating Informational Text Grade 3Q4-W6-Restating Informational Text Grade 3
Q4-W6-Restating Informational Text Grade 3JemimahLaneBuaron
 
1029 - Danh muc Sach Giao Khoa 10 . pdf
1029 -  Danh muc Sach Giao Khoa 10 . pdf1029 -  Danh muc Sach Giao Khoa 10 . pdf
1029 - Danh muc Sach Giao Khoa 10 . pdfQucHHunhnh
 

Dernier (20)

Introduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher EducationIntroduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher Education
 
CARE OF CHILD IN INCUBATOR..........pptx
CARE OF CHILD IN INCUBATOR..........pptxCARE OF CHILD IN INCUBATOR..........pptx
CARE OF CHILD IN INCUBATOR..........pptx
 
Employee wellbeing at the workplace.pptx
Employee wellbeing at the workplace.pptxEmployee wellbeing at the workplace.pptx
Employee wellbeing at the workplace.pptx
 
Nutritional Needs Presentation - HLTH 104
Nutritional Needs Presentation - HLTH 104Nutritional Needs Presentation - HLTH 104
Nutritional Needs Presentation - HLTH 104
 
18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf
18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf
18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf
 
BASLIQ CURRENT LOOKBOOK LOOKBOOK(1) (1).pdf
BASLIQ CURRENT LOOKBOOK  LOOKBOOK(1) (1).pdfBASLIQ CURRENT LOOKBOOK  LOOKBOOK(1) (1).pdf
BASLIQ CURRENT LOOKBOOK LOOKBOOK(1) (1).pdf
 
Organic Name Reactions for the students and aspirants of Chemistry12th.pptx
Organic Name Reactions  for the students and aspirants of Chemistry12th.pptxOrganic Name Reactions  for the students and aspirants of Chemistry12th.pptx
Organic Name Reactions for the students and aspirants of Chemistry12th.pptx
 
Web & Social Media Analytics Previous Year Question Paper.pdf
Web & Social Media Analytics Previous Year Question Paper.pdfWeb & Social Media Analytics Previous Year Question Paper.pdf
Web & Social Media Analytics Previous Year Question Paper.pdf
 
Mattingly "AI & Prompt Design: The Basics of Prompt Design"
Mattingly "AI & Prompt Design: The Basics of Prompt Design"Mattingly "AI & Prompt Design: The Basics of Prompt Design"
Mattingly "AI & Prompt Design: The Basics of Prompt Design"
 
Interactive Powerpoint_How to Master effective communication
Interactive Powerpoint_How to Master effective communicationInteractive Powerpoint_How to Master effective communication
Interactive Powerpoint_How to Master effective communication
 
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptxPOINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
 
Staff of Color (SOC) Retention Efforts DDSD
Staff of Color (SOC) Retention Efforts DDSDStaff of Color (SOC) Retention Efforts DDSD
Staff of Color (SOC) Retention Efforts DDSD
 
Advanced Views - Calendar View in Odoo 17
Advanced Views - Calendar View in Odoo 17Advanced Views - Calendar View in Odoo 17
Advanced Views - Calendar View in Odoo 17
 
Student login on Anyboli platform.helpin
Student login on Anyboli platform.helpinStudent login on Anyboli platform.helpin
Student login on Anyboli platform.helpin
 
INDIA QUIZ 2024 RLAC DELHI UNIVERSITY.pptx
INDIA QUIZ 2024 RLAC DELHI UNIVERSITY.pptxINDIA QUIZ 2024 RLAC DELHI UNIVERSITY.pptx
INDIA QUIZ 2024 RLAC DELHI UNIVERSITY.pptx
 
Separation of Lanthanides/ Lanthanides and Actinides
Separation of Lanthanides/ Lanthanides and ActinidesSeparation of Lanthanides/ Lanthanides and Actinides
Separation of Lanthanides/ Lanthanides and Actinides
 
Beyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global ImpactBeyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global Impact
 
The Most Excellent Way | 1 Corinthians 13
The Most Excellent Way | 1 Corinthians 13The Most Excellent Way | 1 Corinthians 13
The Most Excellent Way | 1 Corinthians 13
 
Q4-W6-Restating Informational Text Grade 3
Q4-W6-Restating Informational Text Grade 3Q4-W6-Restating Informational Text Grade 3
Q4-W6-Restating Informational Text Grade 3
 
1029 - Danh muc Sach Giao Khoa 10 . pdf
1029 -  Danh muc Sach Giao Khoa 10 . pdf1029 -  Danh muc Sach Giao Khoa 10 . pdf
1029 - Danh muc Sach Giao Khoa 10 . pdf
 

Beginning linux-programming

  • 1.
  • 2. Table of Contents Beginning Linux Programming, Second Edition.............................................................................................1 Foreword..............................................................................................................................................................5 Introduction.........................................................................................................................................................6 Welcome.................................................................................................................................................6 Who's this Book For?..............................................................................................................................6 What's Covered in the Book...................................................................................................................6 What You Need to Use this Book...........................................................................................................8 Source Code............................................................................................................................................9 Conventions............................................................................................................................................9 Tell Us What You Think.......................................................................................................................10 Why Should I Return the Reply Card?.................................................................................................10 Chapter 1: Getting Started.............................................................................................................................11 Overview...............................................................................................................................................11 What is UNIX?.....................................................................................................................................11 What is Linux?......................................................................................................................................11 Distributions..........................................................................................................................................11 The GNU Project and the Free Software Foundation...........................................................................12 Programming Linux..............................................................................................................................13 UNIX Programs....................................................................................................................................13 The C Compiler..............................................................................................................................14 Try It Out − Our First UNIX C Program........................................................................................14 How It Works..................................................................................................................................15 Getting Help..........................................................................................................................................15 Try It Out − Manual Pages and info................................................................................................16 Development System Roadmap............................................................................................................17 Programs.........................................................................................................................................17 Header Files....................................................................................................................................18 Library Files...................................................................................................................................19 Static Libraries...............................................................................................................................19 Try It Out − Static Libraries............................................................................................................20 Shared Libraries.............................................................................................................................22 UNIX Philosophy.................................................................................................................................23 Simplicity.......................................................................................................................................23 Focus..............................................................................................................................................23 Reusable Components....................................................................................................................23 Filters..............................................................................................................................................23 Open File Formats..........................................................................................................................23 Flexibility.......................................................................................................................................23 Summary...............................................................................................................................................24 Chapter 2: Shell Programming.......................................................................................................................25 Overview...............................................................................................................................................25 What is a Shell?....................................................................................................................................26 Pipes and Redirection...........................................................................................................................27 Redirecting Output.........................................................................................................................27 Redirecting Input............................................................................................................................28 Pipes...............................................................................................................................................28 i
  • 3. Table of Contents Chapter 2: Shell Programming The Shell as a Programming Language................................................................................................29 Interactive Programs.......................................................................................................................29 Creating a Script.............................................................................................................................30 Making a Script Executable...........................................................................................................31 Shell Syntax..........................................................................................................................................32 Variables.........................................................................................................................................33 Conditions......................................................................................................................................36 Control Structures...........................................................................................................................38 Functions........................................................................................................................................49 Try It Out − A Simple Function......................................................................................................50 How It Works..................................................................................................................................50 Try It Out − Returning a Value.......................................................................................................51 How It Works..................................................................................................................................52 Commands......................................................................................................................................52 Command Execution......................................................................................................................62 Here Documents.............................................................................................................................66 Try It Out − Using Here Documents...............................................................................................66 Try It Out − Another Use for a Here Document.............................................................................67 How It Works..................................................................................................................................67 Debugging Scripts..........................................................................................................................67 Putting it All Together..........................................................................................................................68 Requirements..................................................................................................................................68 Design.............................................................................................................................................69 Try It Out − A CD Application.......................................................................................................70 Notes................................................................................................................................................76 Summary...............................................................................................................................................77 Chapter 3: Working with Files.......................................................................................................................78 Overview...............................................................................................................................................78 UNIX File Structure..............................................................................................................................78 Directories......................................................................................................................................79 Files and Devices............................................................................................................................79 System Calls and Device Drivers.........................................................................................................81 Library Functions..................................................................................................................................82 Low−level File Access..........................................................................................................................82 write.................................................................................................................................................83 read..................................................................................................................................................83 open.................................................................................................................................................84 Initial Permissions...........................................................................................................................85 umask...............................................................................................................................................86 close.................................................................................................................................................87 ioctl..................................................................................................................................................87 Try It Out − A File Copy Program..................................................................................................87 Other System Calls for Managing Files.........................................................................................89 The Standard I/O Library......................................................................................................................91 fopen................................................................................................................................................92 fread.................................................................................................................................................92 fwrite...............................................................................................................................................93 fclose...............................................................................................................................................93 ii
  • 4. Table of Contents Chapter 3: Working with Files fflush................................................................................................................................................93 fseek.................................................................................................................................................93 fgetc, getc, getchar...........................................................................................................................94 fputc, putc, putchar..........................................................................................................................94 fgets, gets.........................................................................................................................................94 Formatted Input and Output...........................................................................................................95 Other Stream Functions..................................................................................................................98 Try It Out − Another File Copy Program.......................................................................................99 Stream Errors..................................................................................................................................99 Streams and File Descriptors........................................................................................................100 File and Directory Maintenance..........................................................................................................101 chmod............................................................................................................................................101 chown............................................................................................................................................101 unlink, link, symlink......................................................................................................................101 mkdir, rmdir...................................................................................................................................102 chdir, getcwd.................................................................................................................................102 Scanning Directories...........................................................................................................................103 opendir...........................................................................................................................................103 readdir............................................................................................................................................103 telldir.............................................................................................................................................104 seekdir...........................................................................................................................................104 closedir..........................................................................................................................................104 Try It Out − A Directory Scanning Program................................................................................105 How It Works................................................................................................................................106 Errors...................................................................................................................................................107 Advanced Topics................................................................................................................................107 fcntl................................................................................................................................................108 mmap.............................................................................................................................................109 Try It Out − Using mmap.............................................................................................................110 Summary.............................................................................................................................................111 Chapter 4: The UNIX Environment............................................................................................................112 Overview.............................................................................................................................................112 Program Arguments............................................................................................................................112 Try It Out − Program Arguments.................................................................................................113 How It Works................................................................................................................................114 getopt............................................................................................................................................114 Try It Out − getopt.......................................................................................................................115 How It Works................................................................................................................................116 Environment Variables.......................................................................................................................116 Try It Out − getenv and putenv0...................................................................................................117 Use of Environment Variables.....................................................................................................118 The environ Variable....................................................................................................................119 Try It Out − environ......................................................................................................................119 How It Works................................................................................................................................119 Time and Date.....................................................................................................................................119 Try It Out − time...........................................................................................................................120 How It Works................................................................................................................................121 Try It Out − gmtime.....................................................................................................................121 iii
  • 5. Table of Contents Chapter 4: The UNIX Environment How It Works................................................................................................................................122 Try It Out − ctime.........................................................................................................................123 How It Works................................................................................................................................123 Try It Out − strftime and strptime................................................................................................125 How It Works................................................................................................................................126 Temporary Files..................................................................................................................................126 Try It Out − tmpnam and tmpfile.................................................................................................127 How It Works................................................................................................................................127 User Information.................................................................................................................................128 Try It Out − User Information.......................................................................................................129 How It Works................................................................................................................................130 Other User Information Functions...............................................................................................130 Host Information.................................................................................................................................131 Try It Out − Host Information.......................................................................................................131 How It Works................................................................................................................................132 Licensing......................................................................................................................................132 Logging...............................................................................................................................................132 Try It Out − syslog........................................................................................................................134 How It Works................................................................................................................................134 Configuring Logs.........................................................................................................................134 Try It Out − logmask.....................................................................................................................135 How It Works................................................................................................................................136 Resources and Limits..........................................................................................................................136 Try It Out − Resource Limits.......................................................................................................138 How It Works................................................................................................................................140 Summary.............................................................................................................................................140 Chapter 5: Terminals....................................................................................................................................141 Overview.............................................................................................................................................141 Reading from and Writing to the Terminal.........................................................................................141 Try It Out − Menu Routines in C..................................................................................................141 How It Works................................................................................................................................142 Why It Doesn't Quite Work...........................................................................................................143 Handling Redirected Output.........................................................................................................144 Try It Out − Checking for Output Redirection..............................................................................144 How It Works................................................................................................................................145 Talking to the Terminal................................................................................................................145 Try It Out − Using /dev/tty............................................................................................................146 The Terminal Driver and the General Terminal Interface..................................................................147 Overview......................................................................................................................................147 Hardware Model...........................................................................................................................148 The termios Structure..........................................................................................................................149 Input Modes..................................................................................................................................150 Output Modes...............................................................................................................................151 Control Modes..............................................................................................................................152 Local Modes.................................................................................................................................152 Special Control Characters...........................................................................................................153 Terminal Speed.............................................................................................................................156 Additional Functions....................................................................................................................156 iv
  • 6. Table of Contents Chapter 5: Terminals Try It Out − A Password Program with termios...........................................................................157 How It Works................................................................................................................................158 Try It Out − Reading Each Character............................................................................................158 How It Works................................................................................................................................159 Terminal Output..................................................................................................................................159 Terminal Type..............................................................................................................................159 Identify Your Terminal Type.......................................................................................................160 Using terminfo Capabilities..........................................................................................................162 Detecting Keystrokes..........................................................................................................................167 Try It Out − Your Very Own kbhit...............................................................................................167 How It Works................................................................................................................................169 Pseudo Terminals.........................................................................................................................169 Summary.............................................................................................................................................169 Chapter 6: Curses..........................................................................................................................................170 Overview.............................................................................................................................................170 Compiling with curses........................................................................................................................170 Concepts..............................................................................................................................................171 Try It Out − A Simple curses Program.........................................................................................172 Initialization and Termination.............................................................................................................173 Output to the Screen............................................................................................................................173 Reading from the Screen.....................................................................................................................174 Clearing the Screen.............................................................................................................................175 Moving the Cursor..............................................................................................................................175 Character Attributes............................................................................................................................175 Try It Out − Moving, Inserting and Attributes..............................................................................176 The Keyboard......................................................................................................................................177 Keyboard Modes..........................................................................................................................177 Keyboard Input.............................................................................................................................178 Try It Out− Keyboard Modes and Input........................................................................................178 How It Works................................................................................................................................179 Windows.............................................................................................................................................180 The WINDOW Structure..............................................................................................................180 Generalized Functions..................................................................................................................180 Moving and Updating a Window.................................................................................................181 Try It Out − Multiple Windows....................................................................................................182 Optimizing Screen Refreshes.......................................................................................................184 Subwindows........................................................................................................................................185 Try It Out − Subwindows..............................................................................................................185 How It Works................................................................................................................................187 The Keypad.........................................................................................................................................187 Try It Out − Using the Keypad.....................................................................................................188 Color...................................................................................................................................................189 Try It Out − Colors.......................................................................................................................190 Redefining Colors.........................................................................................................................191 Pads.....................................................................................................................................................191 Try It Out − Using a Pad...............................................................................................................192 The CD Collection Application..........................................................................................................193 Try It Out − A New CD Collection Application...........................................................................194 v
  • 7. Table of Contents Chapter 6: Curses Try It Out − Looking at main........................................................................................................196 Try It Out − The Menu..................................................................................................................196 Try It Out − Database File Manipulation.....................................................................................198 Try It Out − Querying the CD Database.......................................................................................202 Summary.............................................................................................................................................206 Chapter 7: Data Management......................................................................................................................207 Overview.............................................................................................................................................207 Managing Memory..............................................................................................................................207 Simple Memory Allocation..........................................................................................................207 Try It Out − Simple Memory Allocation......................................................................................208 How It Works................................................................................................................................208 Allocating Lots of Memory..........................................................................................................208 Try It Out − Asking for all Physical Memory..............................................................................209 How It Works................................................................................................................................209 Try It Out − Available Memory....................................................................................................210 How It Works................................................................................................................................210 Abusing Memory..........................................................................................................................211 Try It Out − Abuse Your Memory................................................................................................211 How It Works................................................................................................................................212 The Null Pointer...........................................................................................................................212 Try It Out − Accessing a Null Pointer..........................................................................................212 How It Works................................................................................................................................213 How It Works................................................................................................................................213 Freeing Memory...........................................................................................................................213 Try It Out − Freeing Memory.......................................................................................................214 How It Works................................................................................................................................214 Other Memory Allocation Functions...........................................................................................214 File Locking........................................................................................................................................215 Creating Lock Files......................................................................................................................215 Try It Out − Creating a Lock File.................................................................................................216 How It Works................................................................................................................................216 Try It Out − Cooperative Lock Files............................................................................................217 How It Works................................................................................................................................218 Locking Regions...........................................................................................................................218 Use of read and write with Locking.............................................................................................221 Try It Out − Locking a File with fcntl...........................................................................................221 How It Works................................................................................................................................222 Try It Out − Testing Locks on a File.............................................................................................223 How It Works................................................................................................................................225 Competing Locks.........................................................................................................................226 Try It Out − Competing Locks.....................................................................................................226 How It Works................................................................................................................................228 Other Lock Commands................................................................................................................228 Deadlocks.....................................................................................................................................229 Databases............................................................................................................................................229 The dbm Database........................................................................................................................229 The dbm Routines........................................................................................................................230 dbm Access Functions..................................................................................................................232 vi
  • 8. Table of Contents Chapter 7: Data Management Additional dbm Functions............................................................................................................235 The CD Application............................................................................................................................237 The CD Application Using dbm...................................................................................................238 Try It Out − cd_data.h...................................................................................................................238 Try It Out − app_ui.c.....................................................................................................................239 Try It Out − cd_access.c...............................................................................................................247 Summary.............................................................................................................................................253 Chapter 8: Development Tools.....................................................................................................................254 Overview.............................................................................................................................................254 Problems of Multiple Source Files.....................................................................................................254 The make Command and Makefiles...................................................................................................255 The Syntax of Makefiles..............................................................................................................255 Options and Parameters to make..................................................................................................255 Comments in a makefile...............................................................................................................258 Macros in a makefile....................................................................................................................258 Try It Out − A Makefile with Macros...........................................................................................259 How It Works................................................................................................................................259 Multiple Targets...........................................................................................................................260 Try It Out − Multiple Targets........................................................................................................260 How It Works................................................................................................................................262 Built−in Rules..............................................................................................................................262 Suffix Rules..................................................................................................................................263 Try It Out − Suffix Rules..............................................................................................................263 How It Works................................................................................................................................264 Managing Libraries with make.....................................................................................................264 Try It Out − Managing a Library..................................................................................................264 How It Works................................................................................................................................265 Advanced Topic: Makefiles and Subdirectories..........................................................................266 GNU make and gcc......................................................................................................................266 Try It Out − gcc −MM...................................................................................................................267 How It Works................................................................................................................................267 Source Code Control...........................................................................................................................267 RCS..............................................................................................................................................267 SCCS............................................................................................................................................273 CVS..............................................................................................................................................274 Writing a Manual Page.......................................................................................................................278 Distributing Software..........................................................................................................................281 The patch Program.......................................................................................................................281 Other Distribution Utilities...........................................................................................................283 Summary.............................................................................................................................................285 Chapter 9: Debugging....................................................................................................................................286 Types of Error.....................................................................................................................................286 Specification Errors......................................................................................................................286 Design Errors................................................................................................................................286 Coding Errors...............................................................................................................................286 General Debugging Techniques..........................................................................................................287 A Program with Bugs...................................................................................................................287 vii
  • 9. Table of Contents Chapter 9: Debugging Code Inspection............................................................................................................................289 Instrumentation.............................................................................................................................290 Try It Out − Debug Information....................................................................................................291 How It Works................................................................................................................................291 Controlled Execution....................................................................................................................292 Debugging with gdb............................................................................................................................293 Starting gdb..................................................................................................................................293 Running a Program.......................................................................................................................294 Stack Trace...................................................................................................................................294 Examining Variables....................................................................................................................295 Listing the Program......................................................................................................................296 Setting Breakpoints......................................................................................................................296 Patching with the Debugger.........................................................................................................299 Learning more about gdb.............................................................................................................300 More Debugging Tools.......................................................................................................................300 Lint: Removing the Fluff from Your Programs...........................................................................301 Function Call Tools......................................................................................................................302 Execution Profiling.......................................................................................................................304 Assertions............................................................................................................................................304 Problems with assert.....................................................................................................................305 Try It Out − assert........................................................................................................................305 How It Works................................................................................................................................306 Memory Debugging............................................................................................................................306 ElectricFence................................................................................................................................307 Try It Out − ElectricFence............................................................................................................307 How It Works................................................................................................................................308 Checker.........................................................................................................................................308 Try It Out − Checker.....................................................................................................................308 How It Works................................................................................................................................309 Resources............................................................................................................................................310 Summary.............................................................................................................................................310 Chapter 10: Processes and Signals...............................................................................................................311 Overview.............................................................................................................................................311 What is a Process?..............................................................................................................................311 Process Structure.................................................................................................................................311 The Process Table........................................................................................................................313 Viewing Processes........................................................................................................................313 System Processes..........................................................................................................................314 Process Scheduling.......................................................................................................................315 Starting New Processes.......................................................................................................................316 Try It Out − system.......................................................................................................................316 How It Works................................................................................................................................317 Replacing a Process Image............................................................................................................317 Try It Out − execlp.......................................................................................................................318 How It Works................................................................................................................................319 Duplicating a Process Image.........................................................................................................319 Try It Out − fork...........................................................................................................................320 How It Works................................................................................................................................321 viii
  • 10. Table of Contents Chapter 10: Processes and Signals Waiting for a Process...................................................................................................................321 Try It Out − wait............................................................................................................................322 How It Works................................................................................................................................323 Zombie Processes.........................................................................................................................323 Try It Out − Zombies....................................................................................................................324 How It Works................................................................................................................................324 Input and Output Redirection.......................................................................................................325 Try It Out − Redirection...............................................................................................................325 How It Works................................................................................................................................326 Threads.........................................................................................................................................326 Signals.................................................................................................................................................326 Try It Out − Signal Handling.......................................................................................................328 How It Works................................................................................................................................329 Sending Signals............................................................................................................................330 Try It Out − An Alarm Clock........................................................................................................330 How It Works................................................................................................................................331 Signal Sets....................................................................................................................................334 Summary.............................................................................................................................................337 Chapter 11: POSIX Threads.........................................................................................................................338 What is a Thread?...............................................................................................................................338 Advantages and Drawbacks of Threads.......................................................................................338 Checking for Thread Support..............................................................................................................339 Try it out − POSIX compliance test..............................................................................................339 How it works.................................................................................................................................340 A First Threads Program.....................................................................................................................340 Try it out − a simple threaded program.........................................................................................342 How it works.................................................................................................................................343 Simultaneous Execution.....................................................................................................................344 Try it out − simultaneous execution of two threads......................................................................344 How it works.................................................................................................................................345 Synchronization..................................................................................................................................345 Synchronization with Semaphores...............................................................................................345 Try it out − a thread semaphore....................................................................................................347 How it works.................................................................................................................................349 Synchronization with Mutexes.....................................................................................................350 Try it out − a thread mutex............................................................................................................350 How it works.................................................................................................................................352 Thread Attributes................................................................................................................................353 detachedstate.................................................................................................................................354 schedpolicy....................................................................................................................................354 schedparam....................................................................................................................................355 inheritsched...................................................................................................................................355 scope..............................................................................................................................................355 stacksize.........................................................................................................................................355 Try it out − setting the detached state attribute.............................................................................355 How it works.................................................................................................................................356 Thread Attributes − Scheduling....................................................................................................357 Try is out − scheduling..................................................................................................................357 ix
  • 11. Table of Contents Chapter 11: POSIX Threads How it works.................................................................................................................................357 Canceling a Thread.............................................................................................................................357 Try it out − canceling a thread......................................................................................................358 How it works.................................................................................................................................360 Threads in Abundance........................................................................................................................360 Try it out − many threads..............................................................................................................360 How it works.................................................................................................................................362 Summary.............................................................................................................................................363 Chapter 12: Inter−process Communication: Pipes....................................................................................364 Overview.............................................................................................................................................364 What is a Pipe?....................................................................................................................................364 Process Pipes.......................................................................................................................................365 popen.............................................................................................................................................365 pclose.............................................................................................................................................365 Try It Out − Reading Output From an External Program............................................................365 How It Works................................................................................................................................366 Sending Output to popen..............................................................................................................366 Try It Out − Sending Output to an External Program...................................................................366 How It Works................................................................................................................................367 The Pipe Call......................................................................................................................................369 Try It Out − The pipe Function.....................................................................................................370 How It Works................................................................................................................................371 Try It Out − Pipes across a fork...................................................................................................371 How It Works................................................................................................................................372 Parent and Child Processes.................................................................................................................372 Try It Out − Pipes and exec...........................................................................................................372 How It Works................................................................................................................................373 Reading Closed Pipes...................................................................................................................374 Pipes Used as Standard Input and Output....................................................................................374 Named Pipes: FIFOs...........................................................................................................................377 Try It Out − Creating a Named Pipe.............................................................................................378 How It Works................................................................................................................................378 Accessing a FIFO.........................................................................................................................378 Try It Out − Accessing a FIFO File.............................................................................................379 How It Works................................................................................................................................379 Advanced Topic: Client/Server using FIFOs......................................................................................385 Try It Out − An Example Client/Server Application...................................................................385 How It Works................................................................................................................................388 The CD Application............................................................................................................................388 Aims.............................................................................................................................................389 Implementation.............................................................................................................................390 Try It Out − The Header File, cliserv.h.........................................................................................392 Client Interface Functions............................................................................................................393 Try It Out − The Client's Interpreter.............................................................................................393 The Server Interface.....................................................................................................................399 Try It Out − server.c......................................................................................................................399 The Pipe........................................................................................................................................402 Try It Out − Pipes Implementation Header...................................................................................402 x
  • 12. Table of Contents Chapter 12: Inter−process Communication: Pipes Application Summary...................................................................................................................407 Summary.............................................................................................................................................407 Chapter 13: Semaphores, Message Queues and Shared Memory.............................................................409 Semaphores.........................................................................................................................................409 Semaphore Definition...................................................................................................................410 A Theoretical Example.................................................................................................................410 UNIX Semaphore Facilities.........................................................................................................411 Using Semaphores........................................................................................................................413 Try It Out − Semaphores...............................................................................................................414 How It Works................................................................................................................................416 Semaphore Summary...................................................................................................................417 Shared Memory...................................................................................................................................417 Overview......................................................................................................................................417 Shared Memory Functions...........................................................................................................418 Shared Memory Summary............................................................................................................423 Message Queues..................................................................................................................................423 Overview......................................................................................................................................424 Message Queue Functions............................................................................................................424 Message Queue Summary............................................................................................................429 The Application..................................................................................................................................429 Try It Out − Revising the Server Functions..................................................................................429 Try It Out − Revising the Client Functions...................................................................................431 IPC Status Commands........................................................................................................................433 Semaphores..................................................................................................................................433 Shared Memory............................................................................................................................433 Message Queues...........................................................................................................................433 Summary.............................................................................................................................................434 Chapter 14: Sockets.......................................................................................................................................435 Overview.............................................................................................................................................435 What is a Socket?................................................................................................................................435 Socket Connections.............................................................................................................................435 Try It Out − A Simple Local Client..............................................................................................436 Try It Out − A Simple Local Server.............................................................................................437 Socket Attributes..........................................................................................................................439 Creating a Socket..........................................................................................................................441 Socket Addresses..........................................................................................................................442 Naming a Socket..........................................................................................................................442 Creating a Socket Queue..............................................................................................................443 Accepting Connections.................................................................................................................443 Requesting Connections...............................................................................................................444 Closing a Socket...........................................................................................................................445 Socket Communications...............................................................................................................445 Try It Out − Network Client..........................................................................................................446 How It Works................................................................................................................................446 Try It Out − Network Server........................................................................................................446 How It Works................................................................................................................................447 Host and Network Byte Ordering.................................................................................................447 xi
  • 13. Table of Contents Chapter 14: Sockets Network Information..........................................................................................................................449 Try It Out − Network Information...............................................................................................450 How It Works................................................................................................................................451 Try It Out − Connecting to a Standard Service............................................................................452 How It Works................................................................................................................................453 The Internet Daemon....................................................................................................................453 Socket Options.............................................................................................................................454 Multiple Clients..................................................................................................................................454 Try It Out − A Server for Multiple Clients...................................................................................455 How It Works................................................................................................................................457 select...................................................................................................................................................457 Try It Out − select.........................................................................................................................458 How It Works................................................................................................................................460 Multiple Clients............................................................................................................................460 Try It Out − An Improved Multiple Client/Server........................................................................460 Summary.............................................................................................................................................463 Chapter 15: Tcl: Tool Command Language...............................................................................................464 Overview.............................................................................................................................................464 A Tcl Overview...................................................................................................................................464 Our First Tcl Program..................................................................................................................464 Tcl Commands.............................................................................................................................465 Variables and Values....................................................................................................................466 Quoting and Substitution..............................................................................................................467 Calculation....................................................................................................................................470 Control Structures.........................................................................................................................471 Error Handling..............................................................................................................................473 String Operations..........................................................................................................................474 Arrays...........................................................................................................................................479 Lists..............................................................................................................................................481 Procedures....................................................................................................................................486 Try It Out − Procedures................................................................................................................486 How It Works................................................................................................................................487 Input and Output...........................................................................................................................487 A Tcl Program.....................................................................................................................................491 Try It Out − A Concordance Program...........................................................................................491 How It Works................................................................................................................................493 Network Support...........................................................................................................................493 Try It Out − socket.......................................................................................................................494 How It Works................................................................................................................................494 Creating a New Tcl.............................................................................................................................494 Tcl Extensions.....................................................................................................................................494 expect............................................................................................................................................494 [incr Tcl].......................................................................................................................................495 TclX..............................................................................................................................................495 Graphics........................................................................................................................................495 Summary.............................................................................................................................................495 xii
  • 14. Table of Contents Chapter 16: Programming for X..................................................................................................................496 Overview.............................................................................................................................................496 What is X?...........................................................................................................................................496 X Server.........................................................................................................................................497 X Protocol......................................................................................................................................497 Xlib................................................................................................................................................497 X Clients........................................................................................................................................497 X Toolkits.....................................................................................................................................497 X Window Manager............................................................................................................................498 The X Programming Model................................................................................................................499 Start Up.........................................................................................................................................499 Main Loop....................................................................................................................................500 Clean Up.......................................................................................................................................500 Fast Track X Programming.................................................................................................................501 The Tk Toolkit....................................................................................................................................501 Windows Programming................................................................................................................502 Try It Out − Saying Hello.............................................................................................................503 How It Works................................................................................................................................503 Configuration Files.......................................................................................................................504 More Commands..........................................................................................................................504 Tk Widgets...................................................................................................................................505 Try It Out − Learning More..........................................................................................................505 How It Works................................................................................................................................506 Tk's Built−in Dialogs...................................................................................................................529 Color Chooser................................................................................................................................529 Get Open/Save Files......................................................................................................................530 Color Schemes..............................................................................................................................531 Fonts.............................................................................................................................................532 Bindings........................................................................................................................................532 BindTags......................................................................................................................................533 Geometry Management................................................................................................................535 Focus and Navigation...................................................................................................................537 Option Database...........................................................................................................................538 Inter−application Communication................................................................................................539 Selection.......................................................................................................................................539 Clipboard......................................................................................................................................540 Window Manager.........................................................................................................................541 Dynamic/Static Loading...............................................................................................................542 Safe Tk.........................................................................................................................................543 A Mega−Widget.................................................................................................................................544 Package File Generation................................................................................................................553 An Application Using the Tree Mega−Widget...................................................................................554 Tk Process Log Viewer.......................................................................................................................556 Internationalization.......................................................................................................................566 Where Now?.................................................................................................................................567 Tix.................................................................................................................................................567 [incr Tk].........................................................................................................................................567 BLT...............................................................................................................................................567 Summary.............................................................................................................................................568 xiii
  • 15. Table of Contents Chapter 17: Programming GNOME using GTK+.....................................................................................569 Overview.............................................................................................................................................569 An Introduction to GNOME...............................................................................................................569 The GNOME Architecture...........................................................................................................570 The GNOME Desktop..................................................................................................................571 Programming in GNOME using GTK+.......................................................................................572 An Application in GNOME.........................................................................................................586 Summary.............................................................................................................................................594 Chapter 18: The Perl Programming Language..........................................................................................595 Overview.............................................................................................................................................595 An Introduction to Perl.................................................................................................................595 A Full Example............................................................................................................................612 Perl on the Command Line...........................................................................................................617 Modules........................................................................................................................................618 The CD Database Revisited.........................................................................................................621 Summary.............................................................................................................................................625 Chapter 19: Programming for the Internet: HTML..................................................................................626 Overview.............................................................................................................................................626 What is the World Wide Web?...........................................................................................................626 Terminology........................................................................................................................................627 The HyperText Transfer Protocol (HTTP)...................................................................................627 Multimedia Internet Mail Extensions (MIME)............................................................................627 Standard Generalized Markup Language (SGML)......................................................................627 Document Type Definition (DTD)...............................................................................................627 HyperText Markup Language (HTML).......................................................................................627 Extensible Markup Language (XML)..........................................................................................628 Cascading Style Sheets (CSS)......................................................................................................628 Extensible Hypertext Markup Language (XHTML)....................................................................628 Uniform Resource Locator (URL)...............................................................................................628 Uniform Resource Identifier (URI)..............................................................................................628 Writing HTML....................................................................................................................................629 Try It Out − A Simple HTML Document....................................................................................629 How It Works................................................................................................................................629 A More Formal Look at HTML..........................................................................................................630 HTML Tags..................................................................................................................................631 Images..........................................................................................................................................637 Try It Out − Adding an Image......................................................................................................638 How It Works................................................................................................................................639 Tables...........................................................................................................................................639 Try It Out − A Table....................................................................................................................640 How It Works................................................................................................................................640 Try It Out − Another Table...........................................................................................................641 How It Works................................................................................................................................642 Anchors or Hyperlinks.................................................................................................................642 Try It Out − Anchors....................................................................................................................643 How It Works................................................................................................................................644 Combining Anchors and Images..................................................................................................644 Try It Out − Images as Anchors...................................................................................................644 xiv