55!begin_node Pexec
66(!begin_liste) [Availability]
77!item [Name:]
8- ¯ Program execution® - Load and execute a program.
8+ � Program execution� - Load and execute a program.
99
1010!item [Opcode:]
111175
@@ -168,9 +168,10 @@ Command lines are passed as a (!I)Pascal format(!i) string, i.e. the first
168168byte contains the length of the line (maximum 124 characters).
169169
170170!item [(!nolink [Return]) value:]
171- (!B)Return value:(!b) The function returns the exit code of the child
172- process. If an overlay was loaded, the result contains the basepage of the
173- overlay. With a negative result, an error has arisen.
171+ (!B)Return value:(!b) The return value is either a negative 32-bit value
172+ (if an error occurred within Pexec) or a 16-bit value (the value returned by
173+ the executed program using Pterm, Ptermres, or PtermO). If an overlay was
174+ loaded, the result contains the basepage of the overlay.
174175
175176!item [Availability:]
176177All (!nolink [GEMDOS]) versions.
@@ -212,7 +213,7 @@ Adresse%=Gemdos(&H4B,W:mode%,L:name%,L:cmdline%,L:env)
212213!begin_node Pexec
213214(!begin_liste) [Beschreibung]
214215!item [Name:]
215- ¯ program execution® - Programm laden und ausf hren.
216+ � program execution� - Programm laden und ausf� hren.
216217
217218!item [Gemdosnummer:]
21821975
@@ -221,17 +222,17 @@ Adresse%=Gemdos(&H4B,W:mode%,L:name%,L:cmdline%,L:env)
221222int32_t Pexec ( uint16_t mode, ... );
222223
223224!item [Beschreibung:]
224- Die Funktion l„ dt und startet ein Programm. šber den Parameter (!I)mode(!i)
225- lassen sich verschiedene Varianten ausw„ hlen:
225+ Die Funktion l� dt und startet ein Programm. �ber den Parameter (!I)mode(!i)
226+ lassen sich verschiedene Varianten ausw� hlen:
226227!begin_xlist [mode]
227228!item [mode]
228229Bedeutung
229230
230231!item [0]
231232int32_t Pexec (0, int8_t *name, int8_t *cmdline, int8_t *env);
232233
233- (!B)Load and go:(!b) L„ dt und startet das in (!I)name(!i) angegebene
234- Programm, und bergibt die Kommandozeile (!I)cmdline(!i). F r den Parameter
234+ (!B)Load and go:(!b) L� dt und startet das in (!I)name(!i) angegebene
235+ Programm, und � bergibt die Kommandozeile (!I)cmdline(!i). F� r den Parameter
235236(!I)env(!i) gilt:
236237!begin_xlist !compressed [NULL]
237238!item [-1]
@@ -246,13 +247,13 @@ Jeder andere Wert ist ein Zeiger auf das zu vererbene Environment.
246247
247248(!B)Load, don't go:(!b) wird meist zum Starten von Overlays oder zum Laden
248249von Programmen in einem Debugger benutzt. Entspricht (!I)mode(!i) 0, mit dem
249- Unterschied, daž das Programm nicht sofort gestartet wird, sondern ein
250- Zeiger auf die Basepage als LONG zur ckgeliefert wird. Der Parent ist der
251- Eigent mer des Speichers, den die Basepage und das Environment des Childs
252- belegen und muž ihn freigeben, wenn das Child sich beendet hat. (!nl)
253- (!B)Achtung:(!b) Der Aufrufer ist daf r verantwortlich, Daten- und Instruktions-caches
254- ung ltig zu machen, auch f r den Fall, daž das Overlay anschliessend mit Pexec Mode 4
255- ausgef hrt werden soll.
250+ Unterschied, da� das Programm nicht sofort gestartet wird, sondern ein
251+ Zeiger auf die Basepage als LONG zur� ckgeliefert wird. Der Parent ist der
252+ Eigent� mer des Speichers, den die Basepage und das Environment des Childs
253+ belegen und mu� ihn freigeben, wenn das Child sich beendet hat. (!nl)
254+ (!B)Achtung:(!b) Der Aufrufer ist daf� r verantwortlich, Daten- und Instruktions-caches
255+ ung� ltig zu machen, auch f� r den Fall, da� das Overlay anschliessend mit Pexec Mode 4
256+ ausgef� hrt werden soll.
256257
257258!item [4]
258259int32_t Pexec (4, 0L, PD *basepage, 0L); (!nl)
@@ -263,9 +264,9 @@ mit mode 3 oder 5 erzeugt worden sein.
263264!item [5]
264265(!nolink [PD]) *Pexec (5, 0L, int8_t *cmdline, int8_t *env); (!nl)
265266
266- (!B)Create Basepage:(!b) Zun„ chst legt GEMDOS ein neues Environment an. Dann
267- wird der gr”žte zusammenh„ ngende Speicherblock alloziert und in den ersten
268- 256 Byte eine Basepage angelegt. F r den Parameter (!I)env(!i) gilt:
267+ (!B)Create Basepage:(!b) Zun� chst legt GEMDOS ein neues Environment an. Dann
268+ wird der gr��te zusammenh� ngende Speicherblock alloziert und in den ersten
269+ 256 Byte eine Basepage angelegt. F� r den Parameter (!I)env(!i) gilt:
269270!begin_xlist !compressed [NULL]
270271!item [-1]
271272= kein Environment anlegen.
@@ -281,28 +282,28 @@ einen Aufruf von Pvfork ohne Blockieren des parent zu emulieren.
281282int32_t Pexec (6, 0L, PD *basepage, 0L); (!nl)
282283
283284(!B)Just go, then free:(!b) Entspricht (!I)mode(!i) 4, mit dem Unterschied,
284- daž allozierter Speicher dem gestarteten Prozess und nicht dem Starter
285- geh” rt, so daž der Speicher, den die Basepage belegt, automatisch
285+ da� allozierter Speicher dem gestarteten Prozess und nicht dem Starter
286+ geh� rt, so da� der Speicher, den die Basepage belegt, automatisch
286287freigegeben wird, wenn das Child mit Pterm terminiert. Zusammen mit Modus 3
287288kann damit der gleiche Effekt erzielt werden, wie durch Modus 0. Dieser
288- Modus steht erst ab (!nolink [GEMDOS])-Version 0.15 zur Verf gung.
289+ Modus steht erst ab (!nolink [GEMDOS])-Version 0.15 zur Verf� gung.
289290
290291!item [7]
291292PD *Pexec (7, uint32_t prgflags, int8_t *cmdline, int8_t *env);
292293
293294(!B)Create Basepage, respecting prgflags:(!b) Analog (!I)mode(!i) 5, nur
294295kann in (!I)prgflags(!i) die gleiche Information wie im Feld ph_prgflags des
295- Programm-Headers bergeben werden. Dieser Modus wird vom BIOS des TT
296+ Programm-Headers � bergeben werden. Dieser Modus wird vom BIOS des TT
296297benutzt, um GEM zu starten, und steht erst ab GEMDOS Version 0.19 zur
297- Verf gung.
298+ Verf� gung.
298299
299300!item [100]
300301int32_t Pexec (100, int8_t *name, int8_t *cmdline, int8_t *env);
301302
302303(!B)Load, go, don't wait:(!b) Analog (!I)mode(!i) 0, nur wartet der
303304Aufrufer nicht, bis das gestartete Programm beendet wird, d.h. die Funktion
304- kehrt sofort zum Parent Prozess zur ck, w„ hrend das Child startet. Der
305- R ckgabewert ist ein negativer Fehlercode oder die positive PID des Childs.
305+ kehrt sofort zum Parent Prozess zur� ck, w� hrend das Child startet. Der
306+ R� ckgabewert ist ein negativer Fehlercode oder die positive PID des Childs.
306307
307308!item [101]
308309da dieser Modus nur MagiC-intern zum Vererben von Pfad- und Dateihandles
@@ -319,13 +320,13 @@ int32_t Pexec (104, int8_t *name, PD *basepage, 0L); (!nl)
319320(!B)Just go, don't wait:(!b) Analog (!I)mode(!i) 4, nur wartet der Aufrufer
320321nicht, bis das gestartete Programm beendet wird. Es wird ein Prozess
321322gestartet, dessen Basepage vorher durch einen Modus von 3, 5 oder 7 gesetzt
322- wurde. Zu beachten ist, daž das Environment und die Basepage des Childs sich
323- auch im Besitz des Parents befinden (tats„ chlich erbt der Child allen
323+ wurde. Zu beachten ist, da� das Environment und die Basepage des Childs sich
324+ auch im Besitz des Parents befinden (tats� chlich erbt der Child allen
324325Speicher, der sich im Besitz des Parents befindet). Der Parameter
325326(!I)name(!i) ist ein Zeiger auf einen String, der den Namen des neuen
326327Prozesses beschreibt; bei einem NULL-Wert wird der Name des Parent-Prozesses
327328benutzt. Die Funktion liefert einen negativen Fehlercode, oder die positive
328- PID des Childs zur ck.
329+ PID des Childs zur� ck.
329330
330331!item [106]
331332int32_t Pexec (106, int8_t *name, PD *basepage, 0L); (!nl)
@@ -335,10 +336,10 @@ befinden sich Environment und Basepage des Childs (!I)nicht(!i) im Besitz
335336des Parents, und der Child hat keinen Zugriff auf Speicher, welcher dem
336337Parent-Prozess zugeteilt wurde. Beim Beenden des Childs wird dessen
337338Speicherplatz wieder freigegeben. In Verbindung mit Modus 3 entspricht Pexec
338- (106, ...) daher dem Modus 100 (w„ hrend Modus 3 gefolgt von Modus 6 einem
339+ (106, ...) daher dem Modus 100 (w� hrend Modus 3 gefolgt von Modus 6 einem
339340Aufruf von Pexec (0, ...) entspricht).
340341(!nl)
341- Wird ab MagiC 2.0 nicht mehr unterst tzt.
342+ Wird ab MagiC 2.0 nicht mehr unterst� tzt.
342343
343344!item [107]
344345entspricht im wesentlichen (!I)mode(!i) 7, und wird intern von MagiC seit Version 2.10
@@ -347,15 +348,15 @@ verwendet. Auf die genaue Syntax wird daher an dieser Stelle verzichtet.
347348!item [108]
348349wird von (!nolink [MagiC]) seit Version 2.10 intern zum Starten eines Accessories verwendet.
349350Da die genaue Syntax offiziell nicht dokumentiert ist, sollten eigene
350- Programme besser auf shel_write zur ckgreifen.
351+ Programme besser auf shel_write zur� ckgreifen.
351352
352353!item [200]
353354int32_t Pexec (200, int8_t *name, int8_t *cmdline, int8_t *env);
354355
355- (!B)Replace program and go:(!b) Analog (!I)mode(!i) 100, jedoch berschreibt der neue
356- Prozess den alten vollst„ ndig. Der alte Prozess beh„ lt zwar seine PID und
356+ (!B)Replace program and go:(!b) Analog (!I)mode(!i) 100, jedoch � berschreibt der neue
357+ Prozess den alten vollst� ndig. Der alte Prozess beh� lt zwar seine PID und
357358die meisten seiner Attribute, aber sein gesamter Speicherplatz wird
358- freigegeben. W„ hrend Pexec (0, ...) als Unterprogrammaufruf (call...return)
359+ freigegeben. W� hrend Pexec (0, ...) als Unterprogrammaufruf (call...return)
359360angesehen werden kann, wirkt dieser Modus eher wie ein 'goto'.
360361
361362!item [300]
@@ -367,31 +368,31 @@ verzichtet.
367368
368369!end_xlist
369370(!B)Hinweis:(!b) Nicht alle Modi sind unter allen Betriebssystemvarianten
370- verf gbar; deshalb sollte der R ckgabewert der Funktion beachtet werden.
371- Unbekannte Modi sorgen f r ein Funktionsergebnis von EINVFN.
371+ verf� gbar; deshalb sollte der R� ckgabewert der Funktion beachtet werden.
372+ Unbekannte Modi sorgen f� r ein Funktionsergebnis von EINVFN.
372373
373- Kommandozeilen werden als String im (!I)Pascal-Format(!i) bergeben, d.h. im
374- ersten Byte befindet sich die L„ nge der Zeile (maximal 124 Zeichen).
374+ Kommandozeilen werden als String im (!I)Pascal-Format(!i) � bergeben, d.h. im
375+ ersten Byte befindet sich die L� nge der Zeile (maximal 124 Zeichen).
375376
376377!item [Ergebnis:]
377- Die Funktion liefert als Ergebnis den Abschlužcode des Child-Prozesses. Wenn
378- ein Overlay geladen wurde, enth„ lt das Ergebnis die Basepage des Overlays.
378+ Die Funktion liefert als Ergebnis den Abschlu�code des Child-Prozesses. Wenn
379+ ein Overlay geladen wurde, enth� lt das Ergebnis die Basepage des Overlays.
379380Bei einem negativen Resultat ist ein Fehler aufgetreten.
380381
381382
382- !item [Verf gbar:]
383+ !item [Verf� gbar:]
383384Alle GEMDOS Versionen.
384385
385386!item [Gruppe:]
386387Prozessfunktionen
387388
388389!item [Querverweis:]
389- (!link [Binding] [Bindings f r Pexec]) ~ shel_write ~
390+ (!link [Binding] [Bindings f� r Pexec]) ~ shel_write ~
390391(!link [Programmflags][Die Programmflags]) ~ ARGV-Verfahren
391392(!ende_liste)
392393
393394
394- !begin_node Bindings f r Pexec
395+ !begin_node Bindings f� r Pexec
395396!ignore_index
396397(!begin_liste) [Assembler:]
397398!item [C:]
0 commit comments