LiNUX-UNix-Systemprogrammierung

Ähnliche Dokumente
Linux/Unix- Systemprogrammierung

Martin Fowler, Kendali Scott. UML - konzentriert. Die Standardobjektmodellierungssprache anwenden

Linux-Kernel- Programmierung

VBA mit Office 97 lernen

Linux/Unix- Systemprogrammierung

C und Linux HANSER. Martin Gräfe. Die Möglichkeiten des Betriebssystems mit eigenen Programmen nutzen. Z., erweiterte Auflage

Die С ++-Programmiersprache

C-Programmierung lernen

Windows NT 4.0 in heterogenen Netzen

Betriebssysteme. 4y Springer. Eine kompakte Einführung mit Linux. Albrecht Achilles. Mit 31 Abbildungen

Microsoft FrontPage 98

Martin Gräfe. С und Linux. Die Möglichkeiten des Betriebssystems mit eigenen Programmen nutzen HANSER

Linux-Kernel- Programmierung

ADDISON-WESLEY PUBLISHING COMPANY

Objektorientiertes Programmieren in C++

Linux-Kernel- Programmierung

Programmieren von UNIX-Netzen

C++für Naturwissenschaftler

Mehr Effektiv C++ programmieren

Windows 11. Grundlagen Praxis Optimierung. Klaus Fahnenstich Rainer G. Haselier ADDISON-WESLEY PUBLISHING COMPANY

Cisco TCP/IP-Routing. net.com networking & communications. Konzeption und Aufbau eines Netzwerkes mit Cisco-Routern TT ADDISON-WESLEY.

SCSI-Bus und IDE-Schnittstelle

Portfolio-Management

Projektmanagement. Konzeption und praktischer Einsatz des R/3 Moduls PS ADDISON-WESLEY. An imprint of Addison Wesley Longman, Inc.

UML konzentriert. Eine kompakte Einführung in die Standard-Objektmodellierungssprache. Martin Fowler. ADDISON-WESLEY An imprint of Pearson Education

Objektorientierte Softwaremigration

ActiveX/DCOM-Programmierung mit Visual C++ 6

UML - Unified Modeling Language

Ulrich Cuber Das Einsteigerseminar SUSE Linux 10.x

NT-Unix-Integration ,06,0*4. Administrierbare Netze aufbauen mit Windows NT und Unix. dpunkt.verlag. Andreas Röscher

S hel I-S kri pt- Program m ieru ng

Raffinierte Shell Scripts

Programmierung mit Access 7 für Windows 95

Enterprise PHP Tools

Achim Bühl, Peter Zöfel SPSS. Methoden für die Markt- und Meinungsforschung. Technische Unäversität Darmstadt

Inhaltsverzeichnis Übersicht Prozesse

Betriebssysteme Grundlagen und Konzepte

C und Linux HANSER. Martin Gräfe. Die Möglichkeiten des Betriebssystems mit eigenen Programmen nutzen. 3., aktualisierte Auflage

C++GUI Programmierung mit Qt 4

PC Perfekt! Troubleshooting, Aufrüstung, Tuning. Michael Kiermeier ADDISON-WESLEY. An imprint of Addison Wesley Longman, Inc.

A Kompilieren des Kernels B Lineare Listen in Linux C Glossar Interessante WWW-Adressen Literaturverzeichnis...

C und Linux HANSER. Martin Gräfe. Die Möglichkeiten des Betriebssystems mit eigenen Programmen nutzen

Webdesign mit Photoshop 5

MICROSOFT EXCEL 3.0 HOTLINE

UNIX und С Ein Anwenderhandbuch

Windows-Testumgebung

Künstliche Intelligenz

Rüdiger Brause. Betriebssysteme. Grundlagen und Konzepte. Dritte, überarbeitete Auflage Mit 170 Abbildungen. Springer

Die C++-Programmiersprache

I Installation und ErsteSchritte 7. 1 Allgemeines 8

I Installation und Erste Schritte 7

Der Apache-Webserver

MCSE für Windows Server 2003

Barcode. Mathias Pötter / Ralf Jesse. Einführung und Anwendungen. Verlag Heinz Heise

FÜR DEN PC. Bi B JL( O T H C- K

Manfred Precht, Nikolaus Meier, Joachim Kleinlein. EDV-Grundwissen. Eine Einführung in Theorie und Praxis der modernen EDV 4.

O REILLY. Oracle PL/SQL Programmierung Paris - - Steven Feuerstein. mit Bill Pribyl. Deutsche Übersetzung von Dorothea Reder 2.

Objektorientierte Prozeßsimulation in C++

TYP03-Extensions entwickeln

Einführung in Visual C++ 1.5

Notes/Domino effektiv nutzen

Frank Budszuhn Thomas Reichel. Visual C Windows-Programmierung mit den MFC ADDISON-WESLEY. An imprint of Addison Wesley Longman, Inc.

Jasmin Blanchette, Mark Summerfield

Interprozesskommunikation IPC

Inhaltsverzeichnis. Vorwort 1. 1 EINLEITUNG Übersicht zum Buch 5

Grundfragen der Medienwirtschaft

Kreativ entwerfen und gestalten mit CorelDRAW! 5.0

Martin Fowler, Kendall Scott. UML konzentriert. Eine strukturierte Einführung in die Standard-Objektmodellierungssprache. 2., aktualisierte Auflage

Ralf Kirsch Uwe Schmitt. Programmieren inc. Eine mathematikorientierte Einführung. Mit 24 Abbildungen und 13 Tabellen. Springer

Manfred Precht Nikolaus Meier Joachim Kleinlein. EDV-Grundwissen. 5. Auflage. yy ADDISON-WESLEY. An imprint of Addison Wesley Longman, Inc.

Python. Grundlagen und Praxis. Peter Walerowski ADDISON-WESLEY. An imprint of Pearson Education

Die Client/Server- Technologie des SAP-Systems R/3

Software- Projektmanagement kompakt

Strategische Analyse von Unternehmensakquisitionen

Paul Molitor und Jörg Ritter VHDL. Eine Einführung. ein Imprint von Pearson Education

Relationale Datenbanken - Theorie und Praxis

ecommerce Websites Entwicklung erfolgreicher Web-Auftritte mit Java, JavaScript, HTML, XML und SQL Vivek Sharma Rajiv Sharma ADDISON-WESLEY

Der Rational Unified Process

Bilanzierung von güterwirtschaftlichen Sicherungsbeziehungen nach IAS 39 zum Hedge Accounting

EDV-orientierte Betriebswirtschaftslehre

O'REILLY 8 Beijing Cambridge Farnham Köln Paris Sebastopol Taipei Tokyo

Office 2000 für Small Business

Unix/Linux Survival Guide

Journalistische Ethik

Bernd Bleßmann, Jörg Bleßmann. Linux. Aufbau und Einsatz eines Betriebssystems. 1. Auflage. HLuHB Darmstadt. Bestellnummer Bildungsverlag EINS

Java-Persistence-API mit Hibernate

Relationale Datenbanken und SQL

Object Pascal mit Delphi

SPS-Softwareentwickiung mit IEC 61131

Linux-Companion zur Systemadministration

MySQL im Einsatz. Heinz-Gerd Raymans. Mit ODBC, JDBC, PHP und Perl. An imprint of Pearson Education

Barrierefreies Webdesign

Java-Programmierung mit Visual J++ 1.1

Joomla! eigenen Joomla!-Website ^ADDISON-WESLEY. Die Schritt-für-Schritt-Anleitung zur. Stephen Bürge. An imprint of Pearson

SCO-UNIX. Anwendung und grundlegende Systemverwaltung. Heinrich Welter ADDISON-WESLEY PUBLISHING COMPANY

Wirtschaftlichkeit des Qualitätsmanagements

Wissenschaftliche Arbeiten schreiben mit WinWord 97

Transkript:

Helmut Herold 2008 AGI-Information Management Consultants May be used for personal purporses only or by libraries associated to dandelon.com network. LiNUX-UNix-Systemprogrammierung 2., überarbeitete Auflage ADDISON-WESLEY An imprint of Addison Wesley Longman, Inc. München Reading, Massachusetts Menlo Park, California New York Harlow, England Don Mills, Ontario Sydney Mexico City Madrid Amsterdam

Einleitung 1 Gliederung dieses Buches 1 Unix-Standards und -Implementierungen 7 Beispiele und Übungen 7 Hinweis zur Buchreihe: Unix und seine Werkzeuge 7 1 Überblick über die Unix-Systemprogrammierung 9 1.1 Anmelden am Unix-System 9 1.2 Dateien und Directories 11 1.3 Ein- und Ausgabe 17 1.4 Prozesse unter Unix 21 1.5 Ausgabe von System-Fehlermeldungen 26 1.6 Benutzerkennungen 28 1.7 Signale 29 1.8 Zeiten in Unix 32 1.9 Unterschiede zwischen Systemaufrufen und Bibliotheksfunktionen 33 1.10 Unix-Standardisierungen und -Implementierungen 35 1.11 Limits 39 1.12 Erste Einblicke in den Linux-Systemkern 52 1.13 Übung 99 2 Überblick über ANSI C 101 2.1 Allgemeines 101 2.2 Der Präprozessor 106 2.3 Die Sprache ANSI C 114 2.4 Die ANSI-C-Bibliothek 124 2.5 Übung 160 3 Standard-E/A-Funktionen 167 3.1 Der Datentyp FILE 167 3.2 stdin, stdout und stderr 168

3.3 Öffnen und Schließen von Dateien 168 3.4 Lesen und Schreiben in Dateien 172 3.5 Pufferung 200 3.6 Positionieren in Dateien 204 3.7 Temporäre Dateien 207 3.8 Löschen und Umbenennen von Dateien 212 3.9 Ausgabe von Systemfehlermeldungen 214 3.10 Übung 216 Elementare E/A-Funktionen 221 4.1 Filedeskriptoren 221 4.2 Öffnen und Schließen von Dateien 222 4.3 Lesen und Schreiben in Dateien 229 4.4 Positionieren in Dateien 233 4.5 Effizienz von E/A-Operationen 237 4.6 Kerntabellen für offene Dateien 240 4.7 File Sharing und atomare Operationen 241 4.8 Duplizieren von Filedeskriptoren 245 4.9 Ändern oder Abfragen der Eigenschaften einer offenen Datei 247 4.10 Filedeskriptoren und der Datentyp FILE 253 4.11 Das Directory /dev/fd 259 4.12 Übung 260 Dateien, Directories und ihre Attribute 263 5.1 Dateiattribute 263 5.2 Dateiarten 265 5.3 Zugriffsrechte einer Datei 267 5.4 Eigentümer und Gruppe einer Datei 281 5.5 Partitionen, Filesysteme und i-nodes 282 5.6 Symbolische Links 297 5.7 Größe einer Datei 303 5.8 Zeiten einer Datei 307 5.9 Directories 311 5.10 Gerätedateien 325 5.11 Der Puffercache 327 5.12 Realisierung von Filesystemen unter Linux 329 5.13 Übung 364

6 Informationen zum System und seinen Benutzern 369 6.1 Informationen aus der Paßwortdatei 369 6.2 Informationen aus der Gruppendatei 374 6.3 Informationen aus Netzwerkdateien 377 6.4 Informationen zum lokalen System 378 6.5 Informationen zu Systemanmeldungen 380 6.6 Übung 381 7 Datums- und Zeitfunktionen 385 7.1 Datentypen und Konstanten 385 7.2 Datums- und Zeitfunktionen 386 7.3 Übung 401 8 Nicht-lokale Sprünge 403 8.1 Die Headerdatei <setjmp.h> 403 8.2 Übung 416 9 Der Unix-Prozeß 419 9.1 Start eines Unix-Prozesses 419 9.2 Beendigung eines Unix-Prozesses 421 9.3 Environment eines Unix-Prozesses 427 9.4 Speicherbelegung eines Unix-Prozesses 431 9.5 Ressourcenlimits eines Unix-Prozesses 439 9.6 Ressourcenbenutzung eines Unix-Prozesses 443 9.7 Die Speicherverwaltung unter Linux 445 9.8 Übung 477 10 Die Prozeßsteuerung 483 10.1 Prozeßkennungen und die Unix-Prozeßhierarchie 483 10.2 Kreieren von neuen Prozessen 486 10.3 Warten auf Beendigung von Prozessen 502 10.4 Synchronisationsprobleme zwischen Eltern- und Kindprozessen... 515 10.5 Die exec-funktionen 520 10.6 Die Funktion system 527 10.7 Ändern der User-ID und Group-ID eines Prozesses 532 10.8 Informationen zu Prozessen 537 10.9 Übung 545

11 Attribute eines Prozesses (Kontrollterminal, Prozeßgruppe und Session) 549 11.1 Loginprozesse 549 11.2 Prozeßgruppen 554 11.3 Session 556 11.4 Kontrollterminals, Sessions und Prozeßgruppen 557 11.5 Jobkontrolle und Programmausführung durch die Shell 559 11.6 Verwaiste Prozeßgruppen 565 11.7 Übung 566 12 Blockierungen und Sperren von Dateien 567 12.1 Blockierende und nichtblockierende E/A-Operationen 567 12.2 Sperren von Dateien (record locking) 568 12.3 Übung (Multiuser-Datenbankbibliothek) 583 13 Signale 599 13.1 Das Signalkonzept und die Funktion Signal 599 13.2 Signalnamen und Signalnummern 607 13.3 Probleme mit der signal-funktion 616 13.4 Das neue Signalkonzept 618 13.5 Senden von Signalen mit den Funktionen kill und raise 628 13.6 Einrichten einer Zeitschaltuhr und Suspendieren eines Prozesses.. 630 13.7 Anormale Beendigung mit Funktion abort 648 13.8 Zusätzliche Argumente für Signalhandler 650 13.9 Übung 651 14 STREAMS in System V 655 14.1 Allgemeines zu STREAMS 655 14.2 STREAM-Messages 657 14.3 Übung 669 15 Fortgeschrittene Ein- und Ausgabe 671 15.1 E/A-Multiplexing 671 15.2 Asynchrone E/A 681 15.3 Memory Mapped I/O 683 15.4 Weitere read- und write-funktionen 695 15.5 Übung 699

16 Dämonprozesse 703 16.1 Typische Unix-Dämonen 703 16.2 Besonderheiten von Dämonen 704 16.3 Schreiben von eigenen Dämonen 705 16.4 Fehlermeldungen von Dämonen 707 16.5 Übung 714 17 Pipes und FIFOs 717 17.1 Überblick über die unterschiedlichen Arten der Interprozeßkommunikation 717 17.2 Pipes 718 17.3 Benannte Pipes (FIFOs) 744 17.4 Übung 749 18 Message-Queues, Semaphore und Shared Memory 753 18.1 Allgemeine Strukturen und Eigenschaften 753 18.2 Message-Queues 756 18.3 Semaphore 770 18.4 Shared Memory 780 18.5 Übung 800 19 Stream Pipes, Client-Server-Realisierungen und Netzwerkprogrammierung 805 19.1 Client-Server-Eigenschaften der klassischen IPC-Methoden 805 19.2 Stream Pipes 807 19.3 Austausch von Filedeskriptoren zwischen Prozessen 811 19.4 Client-Server-Realisierung mit verwandten Prozessen 823 19.5 Benannte Stream Pipes 828 19.6 Client-Server-Realisierung mit nicht verwandten Prozessen 845 19.7 Netzwerkprogrammierung mit TCP/IP 856 19.8 Übung 877 20 Terminal-E/A 879 20.1 Charakteristika eines Terminals im Überblick 879 20.2 Terminalattribute und Terminalidentifizierung 887 20.3 Spezielle Eingabezeichen 896 20.4 Terminalflags 900 20.5 Baudraten von Terminals 908 20.6 Zeilensteuerung bei Terminals 910

20.7 Kanonischer und nicht-kanonischer Modus 912 20.8 Terminalfenstergrößen 919 20.9 termcap, terminfo und curses 921 20.10 S-Lang - Eine Alternative zu curses unter Linux 936 20.11 Die Linux-Konsole 953 20.12 Die Programmierung von virtuellen Konsolen unter Linux 985 20.13 Übung 994 21 Weitere nützliche Funktionen und Techniken 1007 21.1 Expandierung von Dateinamen 1007 21.2 String-Vergleiche mit regulären Ausdrücken 1013 21.3 Abarbeiten von Optionen auf der Kommandozeile 1023 22 Wichtige Entwicklungswerkzeuge 1055 22.1 gcc-der GNU-C-Compiler 1055 22.2 ld - Der Linux /Unix-Linker 1060 22.3 gdb-dergnu-debugger 1061 22.4 strace - Mitprotokollieren aller Systemaufrufe 1067 22.5 Tools zum Auffinden von Speicherüberschreibungen und -lücken. 1073 22.6 ar - Erstellen und Verwalten von statischen Bibliotheken 1082 22.7 Dynamische Bibliotheken 1087 22.8 make - Ein Werkzeug zur automatischen Programmgenerierung..1100 A Headerdatei eighdr.h und Modul fehler.c 1123 A.l Headerdatei eighdr.h 1123 A.2 Zentrales Fehlermeldungsmodul fehler.c 1124 B Ausgewählte Lösungen zu den Übungen 1129 B.l Ausgewählte Lösungen zu Kapitel 4 (Elementare E/ A-Funktionen) 1129 B.2 Ausgewählte Lösungen zu Kapitel 5 (Dateien, Directories und ihre Attribute) 1130 B.3 Ausgewählte Lösungen zu Kapitel 7 (Datums-und Zeitfunktionen) 1133 B.4 Ausgewählte Lösungen zu Kapitel 8 (Nicht-lokale Sprünge) 1133 B.5 Ausgewählte Lösungen zu Kapitel 9 (Der Unix-Prozeß) 1134 B.6 Ausgewählte Lösungen zu Kapitel 10 (Die Prozeßsteuerung) 1135 B.7 Ausgewählte Lösungen zu Kapitel 11 (Attribute eines Prozesses).. 1137 B.8 Ausgewählte Lösungen zu Kapitel 13 (Signale) 1139 B.9 Ausgewählte Lösungen zu Kapitel 14 (STREAMS in System V) 1141

B.10 Ausgewählte Lösungen zu Kapitel 15 (Fortgeschrittene Ein- und Ausgabe) 1141 B.ll Ausgewählte Lösungen zu Kapitel 16 (Dämonprozesse) 1142 B.12 Ausgewählte Lösungen zu Kapitel 17 (Pipes und FIFOs) 1142 B.13 Ausgewählte Lösungen zu Kapitel 18 (Message-Queues, Semaphore und Shared Memory) 1144 Literaturverzeichnis 1145 Stichwortverzeichnis 1149