Mailinglisten-Archive |
Hi Norbert, hi Kilian, >> Ich möchte ein programm über php starten >okay int popen ( string command, string mode) Öffnet eine Verbindung zu einem Prozess, der durch die Anweisung command ausgeführt wurde. Kilian muss natürlich dennoch vorher das Betriebsystem abfragen... ;-) wegen z.B: In Windows NT and 2000, at least, the shell interprets "2>&1" as in Unix. You may have to explicitly call cmd.exe (or command.com). >> und ihm dann immer mal wieder befehle übergeben >oops, >wie stellst Du Dir das vor, >einem laufenden Programm "immer mal wieder" was zu uebergeben. >Dazu benoetigt man IPC, und das ist selten verfuegbar ... Das geht natürlich nur in einem Script, d.h. er muss den Prozess auch wieder beenden. Der Prozesszeiger steht nur dem öffnendem Script zur Verfügung... >> Wie kann ich den ausgabestream trennen, >> wie es das manual schreibt? Dieser Zeiger kann mit den Funktionen fgets(), fgetss() und fputs() benutzt werden. Siehe Manual... >oops, >nicht trennen - umleiten ! - z.B.: 'ls -l > temp.log' >leitet die Ausgabe von 'ls -l' in die Datei 'temp.log' *um* >Die Datei kannst Du dann oeffnen und lesen, oder auch nicht. Umleiten geht auch, mit fgets kann man aber die Daten einlesen und während des Programmablaufs auswerten und das ist bei Programmen die über Kommandozeilen arbeiten wichtig. Macht im übrigen auch sehr viel Spass wenn du mit Shells arbeitest.... ;-) Kann man sehr nette Sachen machen.. $f=popen("vi newfile.txt","w"); sleep(1); fputs($f,"i"); // insert sleep(1); fputs($f,"Hello world\r"); // write the text to vi Editor sleep(1); fputs($f,chr(27)); // cancel action sleep(1); fputs($f,":wq\r"); // write and quit pclose($f); // back to php exit; Beispiel geht nur bei Linux.... Aber vi solls doch auch für Windows geben ;-)) MFG Wolfgang
php::bar PHP Wiki - Listenarchive