Archiv verlassen und diese Seite im Standarddesign anzeigen : bash mit perl ausführen
baumgartner
02-06-2005, 22:34
Ich versuche eine Bash mit dem open 2 Befehl mit perl zu öffnen. allerdings kann ich nur den ersten befehl ausführen. Danach bleibt die shell fix auf stdin und stdout
wisst ihr vielleicht ein bspscript, googeln hat nix ausgespuckt
mfg euer baumi
michael.sprick
03-06-2005, 01:42
Hi - ich habe leider gerade keine Möglichkeit selber zu testen, aber so sollte es mindestens gehen:
Quick ´n very dirty:
#!/usr/bin/perl -w
use Fcntl;
use IPC::Open2; #allows simultaneous read-write access from/to the shell
use Term::ReadKey;
$|++;
$shell_cmdline = '/bin/bash'; # bourne shell aufmachen
$pid=open2(*PLAYERREAD, *PLAYERWRITE, $shell_cmdline);
print "shell-pid: $pid\n";
while (1)
{
print "linux>: ";
my $befehl=<STDIN>;
print PLAYERWRITE "$befehl\n";
while($output = ReadLine 0.1 ,*PLAYERREAD)
{
print $output;
}
}
Wichtig ist hier das timeout in ReadLine - wenn nach 0.1 Sekunden kein Input von PLAYERREAD kommt, fliegt er raus.
Es geht aber besser und schöner mit
select() + vec() + filno()... glaubich zumindest. Das kann ich aber erst morgen testen.
Michael
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.