in reply to Re: top and STDERR hell...
in thread top and STDERR hell...

Nope, still 80 cols (even after adding $ENV{'COLUMNS'} = 1000;).

Neat tho', Both IPC::Open3, and IO::Select are new to me.

./ddd

Replies are listed 'Best First'.
Re^3: top and STDERR hell...
by zentara (Cardinal) on Jun 08, 2005 at 19:54 UTC
    If you are looking to fool the process into different columns, maybe you need to use IO::Pty. I havn't been able to figure it out myself, but there is something in "clone_winsize_from(\*FH)".

    I have this example in my collection, and I can't remember where I got it...probably google.groups or here. Anyway, it may have a few hints for you.

    #!/usr/bin/perl -w # Description: Fool a process into # thinking that STDOUT is a terminal, when in fact # it may be a file or a pipe. This can be useful # with programs like ps and w on linux... which # will trunc their output to the width of the # terminal, and, if they cannot detect the terminal # width, use a default 80 columns. Wouldn't it be # nice to say "ps -aux | grep etcshadow", and get # output that looks like when you just say "ps # -aux"? Well, that's the idea. #try ./pseudotty "xterm -e top" #or ./pseudotty top use warnings; use strict; use IO::Pty; die "usage: ptyexec command [args]\n" unless @ARGV; my $pty = IO::Pty->new; my $slave = $pty->slave; open TTY,"/dev/tty" or die "not connected to a terminal\n"; $pty->clone_winsize_from(\*TTY); close TTY; my $pid = fork(); die "bad fork: $!\n" unless defined $pid; if (!$pid) { # $slave->close(); open STDOUT,">&=".$pty->fileno() or die $!; exec @ARGV; }else{ $pty->close(); while (defined (my $line = <$slave>)) { print $line; } } #cleanup pty for next run $pty->close();

    I'm not really a human, but I play one on earth. flash japh
      <keanu-reeves-voice>Whoah!</keanu-reeves-voice>

      I'll play around with that code, but I don't think that I'll try to deliver a solution that's based on it. I know for a fact that code is an order of magnitude beyond the unix hackery knowledge of anyone else at this company. And being honest, I'll admit that a tad beyond mine as well.
      A good brain stretching excercise, but I don't want want my bread and butter to depend on it!

      ./ddd