Ich möchte einen untergeordneten Prozess in Perl ausführen. Ich möchte auch, dass mein Code plattformunabhängig ist (sowohl für Windows als auch für Unix, außer einigen Fehlern wie Dateipfad usw.).
Das Problem ist Perl-Implementierung von fork in Windows, ist ein Pseudoprozess, eigentlich ein Thread. Bitte beachten Sie die Perl-Fork-Emulation für Windows hier .
Er erwähnt auch Probleme bei der Ausführung von kill
und exec
Befehlen bei Pseudoprozessen. Wäre es sicher, zwei verschiedene Versionen von fork für verschiedene Plattformen zu verwenden oder sollte ich OS-spezifische APIs verwenden?
Forks::Super
macht sich bereits Sorgen um diese Portabilitätsprobleme und löst diese Portabel Code wie
Wenn Sie asynchrone Prozesse benötigen, gehen Sie zu den plattformspezifischen APIs (wenn Sie auf das Kind warten können, können Sie system
oder qx
verwenden).
Das ist fork
/ exec
unter UNIX, Win32::Process::Create
unter Windows. Die Fork-Emulation unter Windows war ein mutiger Versuch, aber die Plattformen sind in diesem Bereich so unterschiedlich. Ich denke, Sie sind auf der Suche nach einer portablen Lösung, die alle Anforderungen erfüllt.
Beispiel: python hat versucht, die Schnittstellen mit ihrem subprocess
-Modul zu vereinheitlichen. Es funktioniert für einfache Sachen, aber es gibt 4 UNIX spezifische und 2 Windows spezifische Parameter (nach Popen).