fork-Implementierung in Perl

8

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?

    
Hermesh Gupta 07.01.2013, 11:35
quelle

2 Antworten

5

Forks::Super macht sich bereits Sorgen um diese Portabilitätsprobleme und löst diese Portabel Code wie

ausführen %Vor%     
mob 07.01.2013 16:44
quelle
4

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).

    
cdarke 07.01.2013 13:22
quelle

Tags und Links