#!/usr/bin/perl use File::Path; use File::Copy; use File::Glob ":glob"; use POSIX ":sys_wait_h"; $timeout = 60; $ENV{HOME}="/root"; $ENV{TMP}="/tmp"; $ENV{MOZILLA_FIVE_HOME}="LIBDIR/mozilla-MOZILLA_VERSION"; $ENV{LD_LIBRARY_PATH}="LIBDIR/mozilla-MOZILLA_VERSION"; $ENV{MOZ_DISABLE_GNOME}="1"; umask 022; if ( -f "LIBDIR/mozilla-MOZILLA_VERSION/MOZILLA_NAME-bin" ) { # change cache date to cause it to be dirty unlink <LIBDIR/mozilla-MOZILLA_VERSION/components/*.dat>; # Register firefox $pid = fork(); # I am the child. if ($pid == 0) { exec("LIBDIR/mozilla-MOZILLA_VERSION/MOZILLA_NAME-bin -register> /dev/null 2> /dev/null"); } # I am the parent. else { my $timepassed = 0; do { $kid = waitpid($pid, &WNOHANG); sleep(1); $timepassed++; } until $kid == -1 || $timepassed > $timeout; # should we kill? if ($timepassed > $timeout) { kill (9, $pid); # kill -9 can leave threads hanging around system("/usr/bin/killall -9 LIBDIR/mozilla-MOZILLA_VERSION/MOZILLA_NAME-bin"); } } }