ce04d7e6de01ce5a741ef2692412018f5e0b67bf
[urisagit/Stem.git] / bin / tail_demo
1 #!/usr/local/bin/perl -s
2
3 $line_cnt = 10 ;
4 $offset = 175 ;
5 $base_off = 0 ;
6 $xskip = ( $^O eq 'solaris' ) ? 600 : 500 ;
7
8 my @children ;
9
10 my $tail_dir = 'tail' ;
11
12 $SIG{ 'INT' } = \&cleanup ;
13
14 if ( $s ) {
15
16         $ssfe = 'ssfe' ;
17         $prompt = '-prompt Stem:' ;
18         $echo = 'console_echo=1'
19 }
20
21 -d $tail_dir or mkdir $tail_dir, 0722 or
22                 die "can't create $tail_dir working directory" ;
23
24 foreach my $log ( qw( foo bar bar_status ) ) {
25         unlink "$tail_dir/$log.log" ;
26 }
27
28
29 foreach $cmd ( split /\n/, <<EOT ) {
30 xterm -T Archive -n Archive -geometry 80x35+0+0 -e $ssfe $prompt run_stem $echo archive
31 xterm -T Monitor -n Monitor -geometry 80x35+$xskip+0 -e $ssfe $prompt run_stem $echo monitor
32 xterm -T Tail -n Tail -geometry 80x20+275+420
33 EOT
34
35         print "$cmd\n" ;
36
37         @cmd = split ' ', $cmd ;
38
39         s/:/: / for @cmd ;
40
41         chdir $tail_dir unless $cmd =~ /run_stem/ ;
42
43         fork_exec( @cmd ) ;
44
45         sleep 2 ;
46 }
47
48 while( <STDIN> ) {
49
50         next unless /^q/i ;
51
52         cleanup() ;
53 }
54
55 sub cleanup {
56
57         print "clean up\n" ;
58
59         kill 9, @children ;
60         wait ;  
61         exit ;
62
63 }
64
65 sub fork_exec {
66
67         my( @exec ) = @_ ;
68
69         if ( $pid = fork() ) {
70
71                 push @children, $pid ;
72                 return ;
73         }
74
75         exec @exec ;
76 }