home *** CD-ROM | disk | FTP | other *** search
/ SPACE 2 / SPACE - Library 2 - Volume 1.iso / program / 590 / doc / system.doc < prev    next >
Encoding:
Text File  |  1992-01-06  |  3.2 KB  |  80 lines

  1.  
  2.     ===============================================
  3.  
  4. @(#)       OKAMI SHELL VERSION 1.4 - SYSTEM-FUNKTION
  5.  
  6.     ===============================================
  7.             Stand: 1.12.91
  8.  
  9.  
  10. Um die Okami-Shell von eigenen Programmen aus aufrufen zu können,
  11. gibt es die Funktion system. Beispiel:
  12.  
  13.     DiskDir()
  14.     {
  15.     if (system((char*)0))
  16.       {
  17.         system("ls a:\*");
  18.         system("df a:");
  19.        }
  20.       else
  21.         puts("Keine Shell installiert!");
  22.     }
  23.  
  24. Durch Aufruf der Funktion DiskDir werden Inhalt und freier Speicherplatz
  25. von Laufwerk A: ausgegeben. Dies wird erreicht durch Aufruf der Shell
  26. mit den Kommandos `ls a:\*' und `df a:'.
  27.  
  28. Die system-Funktion kann auf zwei Arten aufgerufen werden:
  29. 1) mit einem Zeiger auf einen String, dann wird dieser String als Kom-
  30. mando von der Shell ausgeführt. Der Rückgabewert von system ist dann
  31. der Rückgabewert dieses Kommandos.  Das Kommando kann alles enthal-
  32. ten, was auch über die Tastatur in der Shell eingegeben werden kann.
  33. Wenn keine Shell installiert ist, gibt system den Wert -999 zurück.
  34. 2) mit einem Null-Pointer ((char*)0), dann gibt system den Wert 1 zu-
  35. rück, wenn eine Shell installiert ist, und sonst den Wert 0. Ein Programm
  36. sollte das Vorhandensein einer Shell auf diese Weise testen, bevor es
  37. sich auf system-Aufrufe verläßt.
  38.  
  39. Wenn system mit der Okami-Shell benutzt wird, kann ein Leerstring über-
  40. geben werden. In diesem Fall geht die Shell in den interaktiven Modus,
  41. der mit Control-D oder durch Eingabe von exit beendet werden kann.
  42. (Dies ist allerdings eine Eigenschaft der Shell, nicht der system-Funktion).
  43.  
  44. Um die system-Funktion benutzen zu können, muß die Datei system.c ein-
  45. gebunden werden. Dazu gibt es folgende Möglichkeiten:
  46. 1. #include "system.c"
  47. 2. Kompilieren der Datei system.c und Mit-Linken der Objektdatei
  48. system.o.
  49. 3. Kompilieren der Datei system.c und Einbinden der Objektdatei system.o
  50. in eine Library.
  51.  
  52. Der Aufruf der Shell erfolgt über den _shell_p-Zeiger. Daher sollte auch
  53. jede andere system-Funktion aus diversen Compiler-Libraries, die diesen
  54. Zeiger benutzt, funktionieren.
  55. Das bedeutet aber auch, daß man auf diese Weise die Shell nur aufrufen
  56. kann, wenn sie sich bereits im Speicher befindet, wenn also das Pro-
  57. gramm, das system benutzt, von der Shell gestartet wurde. In anderen
  58. Fällen kann die Shell mit der Gemdos-Funktion Pexec gestartet werden.
  59.  
  60.  
  61. Wenn system von einem GEM-Programm aus benutzt wird und eine Bild-
  62. schirmausgabe erzeugen soll, z.B. um dem Anwender aus einem Pro-
  63. gramm heraus Shellzugriff zu ermöglichen, dann sollte das GEM-Pro-
  64. gramm vorher eine AES-Deinitialisierung (appl_exit, Bildschirm in Textmo-
  65. dus etc.) ausführen.
  66.  
  67. Ein Beispielprogramm ist in der Datei system.c enthalten. Um es zu akti-
  68. vieren, muß in der Datei
  69.     #define TEST 0
  70. auf
  71.     #define TEST 1
  72. umgeändert werden. Für ein weiteres Beispiel siehe die Datei gem.c .
  73.  
  74. system.c sollte mit jedem C-Compiler funktionieren, der nicht auf Prototy-
  75. pen besteht. Ggfs. muß anstelle von <osbind.h> eine andere Header-Datei
  76. eingebunden werden, nämlich die, die die Gemdos-Funktion Super defi-
  77. niert. (Für Turbo-C und Pure-C ist das <tos.h>, aber man kann hier auch
  78. das in den entsprechenden Libraries enthaltene system() benutzen.)
  79.  
  80.