A. Willemer Wie werde ich UNIX-Guru
| | I ANWENDUNG |
Know-How für Unix/Linux-User: Einführung, Shell, Befehle, Hilfe, Arbeit mit Dateien, Editoren, Reguläre Ausdrücke, nützliche Tools, Hardware.
|
II ADMINISTRATION |
Tools, Systemstart, Benutzer verwalten, Hardware konfigurieren, Software installieren, Datensicherung, Tuning, Kernel
|
III NETZWERK |
Client/Server Systeme, TCP/IP, Routing, IPv6, Internet-Dienste, DHCP, Webserver, Firewalls
|
IV DAS X-WINDOW SYSTEM |
Die grafische Oberfläche von UNIX einrichten und nutzen
|
V PROGRAMMIERUNG VON SHELLSKRIPTEN |
Automatisieren von Tasks durch Shell-Skripte.
|
VI PERL |
Interpreter, Syntax, Variablen, Steuerung, Funktionen, UNIX-Aufrufe, GUIs mit Tk
|
VII PROGRAMMIERWERKZEUGE |
C-Compiler, Analyse-Tools, CVS, yacc, diff
|
VIII UNIX-SYSTEMAUFRUFE |
UNIX-Befehle in eigenen Programmen nutzen
|
IX LITERATUR |
Weiterführende Literatur zu UNIX und LINUX
|
| |
In der Variablen argc steht nach dem Start, wieviele Parameter bei Aufruf des
Programmes übergeben wurden. Dieser Wert ist immer mindestens 1, da auch der
Name, unter dem das Programm aufgerufen wurde, als Parameter zählt.
Die Variable argv ist ein Array von Strings. Die Programmparameter werden von
der Shell an den Leerzeichen zerlegt und dann einzeln an das Programm
weitergereicht.
Beispiel:
tudochwas -f huhu lol*
Der Wildcard von lol* wird bekanntermaßen von der Shell ausgewertet.
Wenn im aktuellen Verzeichnis die Dateien lolita, lolli
und lonzo stehen, sind die Parameter von main() folgendermaßen belegt:
In argc steht eine 5. Im Element argv[0] findet sich der Name des Programmes
inklusive Pfad, in diesem Fall ./tudochwas.
Da tudochwas aus dem aktuellen Verzeichnis gestartet wurde und kein
Pfad angegeben wurde, bemühte die Shell die Variable PATH. Darin fand sie dann
den Pfad . und setzte ihn vor den Programmnamen.
argv[1] enthält die Option -f und argv[2] den
Parameter »huhu«. Die weiteren Elemente von argv hängen von den Dateien
im aktuellen Verzeichnis ab. Da auf lol* sowohl lolita als auch lolli passen,
füllen diese die nächsten zwei argv-Elemente.
Da das erste Element in argv immer der Name ist, mit dem das Programm
aufgerufen wurde, kann man dem Programm Optionen durch den Befehlsnamen
mitgeben. So entspricht beispielsweise der Befehl uncompress dem
Aufruf compress -d . Das erreichen Sie, indem ein Link namens
uncompress auf compress erzeugen. So ein Link kostet
unter UNIX nur einen Verzeichniseintrag mehr. Das Programm prüft beim
Start, ob es unter dem Namen uncompress aufgerufen wurde und fügt
in diesem Fall die Option -d hinzu.
An den letzten Argumenten erkennt man, dass der Stern unter UNIX von der Shell
aufgelöst wird. Dadurch ist erreicht, dass alle Programme von Haus aus die
Wildcards der Shell gleichermaßen interpretieren, da sie sie selbst nicht
auswerten.
Das folgende kleine Programm zeigt seine Aufrufparameter an:
[Zeigt die Aufrufparameter]
int main(int argc, char **argv)
{
int i;
for (i=0; i<argc; i++) {
puts(argv[i]);
}
return 0;
}
Auch der Rückgabewert der Funktion main() ist von Bedeutung, da dieser an den
Aufrufer zurückgegeben wird. Als Konvention gilt eine 0 als Hinweis,
dass das Programm fehlerfreier ablief. Alle anderen Werte werden als
Fehlermeldungen interpretiert.
Wenn Fehler mitten im Programm entstehen, ist es oft sehr umständlich, wieder
zur Funktion main() zurückzukehren. Hier hilft die Funktion exit() .
Sie beendet das
Programm und der Übergabeparameter wird als Rückgabewert an den Aufrufer des
Programms weitergereicht.
| |
|
|
Ihre Meinung? |
|
|
|
|
| |
| |
Shopping |
|
Versandkostenfrei bestellen in Deutschland und Österreich Info
|
|
| |
| |
|