TS: exec als Hintergrundprozess unter Windows

Beitrag lesen

Hallo und guten Abend nochmal,

Mit folgender Funktion bekomme ich solch einen Prozess schon mal ausgeführt und die Daten:

function execInBackground($cmd) {
    if (substr(php_uname(), 0, 7) == "Windows"){
        pclose(popen("start /B ". $cmd, "r")); 
    }
    else {
        exec($cmd . " > /dev/null &");  
    }
}


$cmd1 = 'meinprogram.exe -f "param1" -c "param2" "zielformat" "zielfile"';
execInBackground($cmd1);

Da hast Du mir eine schöne Abendaufgabe hinterlassen :-)

Nur mal so vorab: das obige geht auch mit exec():


function execInBackground($cmd) 
{
    if (substr(php_uname(), 0, 7) == "Windows")
    {
        $result = exec("start /b ". $cmd, $_output, $errors); 
    }
    else 
    {
        $pid = exec($cmd . " > /dev/null & echo $!" );  
    }
}

Was willst Du mit dem Prozesszeiger, wenn Du ihn sofort wieder wegwirfst? Da bleibe ich mit meinem Verständnis für dein Beispiel stecken.

Allerdings könnte das ein Lösungsweg sein, wenn man ihn aufhebt. Solange der Prozess läuft, müsste der Zeiger gültig bleiben. Kann man einen Prozesszeiger extern speichern, so wie eine ProzessID? Sonst müsstest Du Dir einen Daemon basteln, der die Prozesse startet und überwacht.

Grüße
TS