4 Commits

Author SHA1 Message Date
1080ae9a51 URL repariert. 2006-02-15 14:50:53 +00:00
7cfcc66ec1 Zitat eingefuegt 2006-01-10 10:42:48 +00:00
1bdc17acfc Version 2.0.1, leichte Umstellung der Reihenfolge 2006-01-10 10:27:37 +00:00
84abd69c4a Neuer Abschnitt: Auf Tastendruck warten 2005-10-04 10:58:56 +00:00
3 changed files with 61 additions and 22 deletions

View File

@ -2,7 +2,7 @@
\chapter{Quellen}\label{quellen}
\begin{itemize}
\item Bash Reference Manual (\href{http://www.gnu.org/manual/bash-2.02/bashref.html}{http://www.gnu.org/manual/bash-2.02/bashref.html})
\item Bash Reference Manual (\href{http://www.gnu.org/software/bash/manual/bashref.html}{http://www.gnu.org/software/bash/manual/bashref.html})
\item Die Man-Page der Bash
\item Die deutschsprachige Shell-Newsgroup (\href{news://de.comp.os.unix.shell}{news://de.comp.os.unix.shell})
\item Unix In A Nutshell (\href{http://www.oreilly.com/catalog/unixnut3/}{http://www.oreilly.com/catalog/unixnut3/})

View File

@ -388,10 +388,10 @@ kill $watchdogpid > /dev/null 2>&1
exit 0
\end{lstlisting}
Dann wird durch ein \texttt{wait}\index{wait} darauf gewartet, da<64> sich der
<EFBFBD>berwachte Proze<7A> beendet. Dabei w<>rde \texttt{wait} bis in alle Ewigkeit
warten, w<>re da nicht der Watchdog in der Subshell. Wenn dem die Ausf<73>hrung zu
lange dauert, sorgt er daf<61>r da<64> der Proze<7A> beendet wird.
Dann wird durch ein \texttt{wait}\index{wait=\texttt{wait}} darauf gewartet,
da<EFBFBD> sich der <EFBFBD>berwachte Proze<7A> beendet. Dabei w<>rde \texttt{wait} bis in alle
Ewigkeit warten, w<>re da nicht der Watchdog in der Subshell. Wenn dem die
Ausf<EFBFBD>hrung zu lange dauert, sorgt er daf<61>r da<64> der Proze<7A> beendet wird.
Kommt der <20>berwachte Proze<7A> aber rechtzeitig zur<75>ck, sorgt \texttt{kill} in
Zeile 8 daf<61>r da<64> der Wachhund `eingeschl<68>fert' wird.
@ -399,3 +399,36 @@ Zeile 8 daf
Auf diese Weise ist sichergestellt, da<64> der \texttt{ping} auf keinen Fall
l<EFBFBD>nger als f<>nf Sekunden l<>uft.
\section{Unter Druck: Auf Tasten warten}\label{tastendruck}\index{Tastendruck}
Oft baut man in l<>ngere Ausgaben eine Art Warte-Prompt im Stile von `Bitte
Enter dr<64>cken um fortzufahren' ein. Gewartet wird dann mit Hilfe des
\texttt{read}-Kommandos\index{read=\texttt{read}}.
Will man nicht nur auf den Druck der Enter-Taste reagieren, sondern auf einen
beliebigen Tastendruck, eignet sich das folgende Konstrukt:
\begin{lstlisting}
stty raw -echo
inputchar=`dd if=/dev/tty bs=1 count=1 2> /dev/null`
stty sane
\end{lstlisting}
Zur Erkl<6B>rung: Mit dem Kommando \texttt{stty}\index{stty=\texttt{stty}} kann
ein Terminal konfiguriert werden. Dabei kann es sich sowohl um eine Leitung wie
die serielle Schnittstelle des Rechners handeln, als auch um das Terminal an
dem der Benutzer sitzt. Jedes Terminal hat eine Reihe von Eigenschaften.
Mittels \lstinline|stty raw -echo| wird das Terminal in einen passenden Modus
geschaltet. Das \texttt{-echo} sorgt daf<61>r, da<64> eingegebene Zeichen nicht in
der Konsole wiedergegeben werden.
Danach wird mit \texttt{dd}\index{dd=\texttt{dd}} genau ein Zeichen eingelesen.
Die Fehlerausgabe von \texttt{dd} wird dabei nach /dev/null umgeleitet, da
ansonsten auf der Konsole die Erfolgsmeldungen \textit{1+0 Datens<6E>tze ein, 1+0
Datens<EFBFBD>tze aus} erscheinen w<>rden. Das gelesene Zeichen wird in der Variablen
\texttt{\$inputchar} gesichert und steht somit zur Verf<72>gung.
Nach dem Einlesevorgang wird die Konsole schlie<69>lich mittels
\lstinline|stty sane| wieder in einen benutzbaren Zustand zur<75>ckversetzt.

View File

@ -92,23 +92,6 @@
\begin{document} % hiermit mu<6D> jedes Dokument beginnen
\vspace*{.6in} % Die Titelseite
\thispagestyle{empty}
\begin{centering}
\rule{5in}{.04in}\\ \vspace{.25in}
\Huge {\bf SHELL\\ \vspace{.4in} PROGRAMMIERUNG}\\ \vspace{.1in}
\rule{5in}{.04in}\\ \vspace{.6in}
\large v2.0.0\\
\large \today\\ \vspace{.75in}
\large von\\ \vspace{.3in}
\LARGE {\bf Ronald Schaten} \\ \vspace{.6in}
\large ronald@schatenseite.de\\
\large http://www.schatenseite.de/\\
\end{centering}
\newpage
\thispagestyle{empty} % eine Leerseite
~\vfill
% Syntax-Boxen (sybox) definieren:
\fboxsep 1.36mm
\definecolor{g1}{gray}{0.95}
@ -121,6 +104,29 @@
{\fcolorbox{g1}{g1}
{\parbox{\textwidth}{\usebox{\syntaxbox}\hfill\hbox{}}}}}
\vspace*{.6in} % Die Titelseite
\thispagestyle{empty}
\begin{centering}
\rule{5in}{.04in}\\ \vspace{.25in}
\Huge {\bf SHELL\\ \vspace{.4in} PROGRAMMIERUNG}\\ \vspace{.1in}
\rule{5in}{.04in}\\ \vspace{.6in}
\large v2.0.1\\
\large \today\\ \vspace{.75in}
\large von\\ \vspace{.3in}
\LARGE {\bf Ronald Schaten} \\ \vspace{.6in}
\large ronald@schatenseite.de\\
\large http://www.schatenseite.de/\\
\end{centering}
\newpage
\thispagestyle{empty} % eine Leerseite
\begin{quote}
\emph{The best way to become acquainted with a subject is to write a book about it.
\begin{flushright}(Benjamin Disraeli)\end{flushright}}
\end{quote}
~\vfill
\footnotesize
Die aktuellste Version dieses Dokumentes befindet sich auf