PDA

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