Compare commits
4 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
1080ae9a51 | ||
|
7cfcc66ec1 | ||
|
1bdc17acfc | ||
|
84abd69c4a |
@ -2,7 +2,7 @@
|
|||||||
\chapter{Quellen}\label{quellen}
|
\chapter{Quellen}\label{quellen}
|
||||||
|
|
||||||
\begin{itemize}
|
\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 Man-Page der Bash
|
||||||
\item Die deutschsprachige Shell-Newsgroup (\href{news://de.comp.os.unix.shell}{news://de.comp.os.unix.shell})
|
\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/})
|
\item Unix In A Nutshell (\href{http://www.oreilly.com/catalog/unixnut3/}{http://www.oreilly.com/catalog/unixnut3/})
|
||||||
|
@ -388,10 +388,10 @@ kill $watchdogpid > /dev/null 2>&1
|
|||||||
exit 0
|
exit 0
|
||||||
\end{lstlisting}
|
\end{lstlisting}
|
||||||
|
|
||||||
Dann wird durch ein \texttt{wait}\index{wait} darauf gewartet, daß sich der
|
Dann wird durch ein \texttt{wait}\index{wait=\texttt{wait}} darauf gewartet,
|
||||||
überwachte Prozeß beendet. Dabei würde \texttt{wait} bis in alle Ewigkeit
|
daß sich der überwachte Prozeß beendet. Dabei würde \texttt{wait} bis in alle
|
||||||
warten, wäre da nicht der Watchdog in der Subshell. Wenn dem die Ausführung zu
|
Ewigkeit warten, wäre da nicht der Watchdog in der Subshell. Wenn dem die
|
||||||
lange dauert, sorgt er dafür daß der Prozeß beendet wird.
|
Ausführung zu lange dauert, sorgt er dafür daß der Prozeß beendet wird.
|
||||||
|
|
||||||
Kommt der überwachte Prozeß aber rechtzeitig zurück, sorgt \texttt{kill} in
|
Kommt der überwachte Prozeß aber rechtzeitig zurück, sorgt \texttt{kill} in
|
||||||
Zeile 8 dafür daß der Wachhund `eingeschläfert' wird.
|
Zeile 8 dafür daß der Wachhund `eingeschläfert' wird.
|
||||||
@ -399,3 +399,36 @@ Zeile 8 daf
|
|||||||
Auf diese Weise ist sichergestellt, daß der \texttt{ping} auf keinen Fall
|
Auf diese Weise ist sichergestellt, daß der \texttt{ping} auf keinen Fall
|
||||||
länger als fünf Sekunden läuft.
|
lä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ü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ä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ür, daß 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ätze ein, 1+0
|
||||||
|
Datensätze aus} erscheinen würden. Das gelesene Zeichen wird in der Variablen
|
||||||
|
\texttt{\$inputchar} gesichert und steht somit zur Verfügung.
|
||||||
|
|
||||||
|
Nach dem Einlesevorgang wird die Konsole schließlich mittels
|
||||||
|
\lstinline|stty sane| wieder in einen benutzbaren Zustand zurückversetzt.
|
||||||
|
|
||||||
|
40
shell.tex
40
shell.tex
@ -92,23 +92,6 @@
|
|||||||
|
|
||||||
\begin{document} % hiermit muß jedes Dokument beginnen
|
\begin{document} % hiermit muß 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:
|
% Syntax-Boxen (sybox) definieren:
|
||||||
\fboxsep 1.36mm
|
\fboxsep 1.36mm
|
||||||
\definecolor{g1}{gray}{0.95}
|
\definecolor{g1}{gray}{0.95}
|
||||||
@ -121,6 +104,29 @@
|
|||||||
{\fcolorbox{g1}{g1}
|
{\fcolorbox{g1}{g1}
|
||||||
{\parbox{\textwidth}{\usebox{\syntaxbox}\hfill\hbox{}}}}}
|
{\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
|
\footnotesize
|
||||||
Die aktuellste Version dieses Dokumentes befindet sich auf
|
Die aktuellste Version dieses Dokumentes befindet sich auf
|
||||||
|
Loading…
x
Reference in New Issue
Block a user