Thread Ein Skript, das auf <STDIN> wartet mit einem anderen Skript aufrufen? (15 answers)
Opened by Sven_123 at 2010-06-22 16:44

murphy
 2010-06-23 14:25
#138844 #138844
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
2010-06-23T06:57:37 gabimuc
2010-06-22T14:58:34 murphy
Im Übrigen sei angemerkt, dass das Starten eines externen Programmes unter *nix in jedem Fall ein Forken erfordert.
[...]

der erste satz stimmt so nicht.

mit exec startet man ein programm aus einem prozess heraus, ohne einen neuen prozess zu generieren.
[...]

Naja, wenn man mich unbedingt misverstehen und unvollständig zitieren¹ will, ist das natürlich richtig ;-)

Unter "extern" verstand ich eben, dass ein separater Prozess entsteht und das ursprüngliche Programm weiterläuft. Insbesondere erschließt sich diese Bedeutung meiner Worte aus dem nicht zitierten folgenden Satz meines Beitrages, in dem ich ausführe, dass man fork genau dafür benötigt, einen neuen Prozess zu erstellen. exec ersetzt ja den aktuellen Prozess durch ein neues Speicherabbild, so dass man zum Starten eines Programmes in einem separaten Prozess auf jeden Fall zuerst forken muss.

Aber wenn man spitzfindig sein will, kann man natürlich auch noch anführen, dass es je nach Unixvariante eventuell auch noch andere Möglichkeiten als den standardmäßigen fork Systemaufruf gibt, um einen neuen Prozess zu erstellen — zum Beispiel den clone Systemaufruf unter Linux, der hier als Basis von fork und weiteren Varianten dient, die als Bibliotheksfunktionen implementiert sind. Und im Zweifelsfall kann man natürlich auch auf den meisten Systemen, extra um meine Aussage in Frage zu stellen, ein Kernelmodul schreiben, das einen neuen Systemaufruf bereitstellt, der manuell einen neuen Prozess mit einem neuen Programmspeicherabbild erstellt.


edit: ¹Das Zitat habe ich Dussel selbst gekürzt, da kann ich also niemandem einen Vorwurf machen! Tut mir leid.
Last edited: 2010-06-23 17:59:54 +0200 (CEST)
When C++ is your hammer, every problem looks like your thumb.

View full thread Ein Skript, das auf <STDIN> wartet mit einem anderen Skript aufrufen?