PERL-Terminal
Hi, all
I'm trying to do a terminal-like application in perl5.
There is a serial-coupled box, which i try to handle.
I used minicom, works fine, but i have to set some filters and controls for in-
and output. So i tried following:
#!/usr/bin/perl -w
use English;
my ($kidpid, $lines, $liner, $port, $oldh);
unless (@ARGV == 1) { die "usage: $0 ttySx" }
($port) = @ARGV;
open(BOX, "+>/dev/$port") or die "can't connect to >/dev/$port $!";
$OUTPUT_AUTOFLUSH = 1;
# split the program into two processes, identical twins
die "can't fork: $!" unless defined($kidpid = fork());
# the if{} block runs only in the parent process
if ($kidpid) {
# print STDERR "[pa Child#: $kidpid Parent#: $$]\n"; #debug only
# copy standard input to the BOX
while (defined ($lines = <STDIN>)) {
print "**s** $lines"; #deb: line sent
print BOX $lines;
if ($lines eq "exit\n") {
kill("TERM",$kidpid); # send SIGTERM to child
close(BOX);
exit 0;
}
}
}
# the else{} block runs only in the child process
else {
# print STDERR "[ch Child#: $kidpid Parent#: $$]\n"; #debug only
# copy BOX to standard output
while (1){
$liner = <BOX>;
print STDOUT "**r** $liner"; # deb: line received
}
}
There seems to be some confusion between input- and outputbuffer.
I get
ati0
**s** ati0
**r** ati0
**r**
**r**
**r** Xircom CreditCard Modem CM-56T (Revision 2.08)
**r**
**r**
**r**
**r** OK
**r**
**r** ati0
**r**
**r**
**r** Xircom CreditCard Modem CM-56T (Revision 2.08)
**r**
**r**
**r**
**r** OK
**r**
...
Does somebody know, what i'm doing wrong?
Is somewhere a perl-list?
Matth
Reply to: