I've got the following subroutine working relatively well for debugging forking processes in a screen session.
I'd like to submit it to whoever is maintaining the perl5db.pl file, or at least to rt.cpan.org. But before I do that, I'd like to make it as robust as possible.
I wasn't sure where else to put this--and since this is a request for the collective wisdom to evaluate the code this seemed as best a place as any. Please let me know if you think this can go better elsewhere.
Please note the following:
And the test code I've been using it on:sub DB::get_fork_TTY { require File::Temp or return ''; my ( $FH, $filename ) = File::Temp::tempfile( UNLINK => 1 ); system( qq{screen -t 'Child $$' sh -c "tty > $filename ; sleep 10000 +00"} ) == 0 or return ''; chomp ( my $tty = <$FH> ); return $tty; }
Added check for failed fork as suggested#!/usr/bin/perl -w use strict; sub DB::get_fork_TTY { require File::Temp or return ''; my ( $FH, $filename ) = File::Temp::tempfile( UNLINK => 1 ); system( qq{screen -t 'Child $$' sh -c "tty > $filename ; sleep 10000 +00"} ) == 0 or return ''; chomp ( my $tty = <$FH> ); return $tty; } if ( my $child = fork ) { $DB::single = 1; print "We're in the parent! ($child)\n"; } else { die "Can't fork" unless defined $child; $DB::single = 1; print "We're in the child!\n"; } exit;
In reply to Debugging forking scripts in screen by harleypig
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |